当前位置: 首页 > 知识库问答 >
问题:

动态ListAdapter列表(TextView)单击并扩展AsyncTask

公良玺
2023-03-14

嗨,我需要textview点击事件

我使用游标从数据库加载列表数据:

hashmap map=new hashmap ();

public class StatusFragment extends ListFragment  {


// Progress Dialog
private ProgressDialog pDialog;
private JSONArray mComments = null;
private ArrayList<HashMap<String, String>> mCommentList;

private static final String TAG_CAT = "cat";

public StatusFragment() {
    // Required empty public constructor
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View rootView = inflater.inflate(R.layout.activity_list, container, false);
    return rootView;

}


@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    Intent intent = getActivity().getIntent();
    new Loadfromdb().execute();

}
public class Loadfromdb extends AsyncTask<Void, Void, Boolean> {


    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(getActivity());
        pDialog.setMessage("Loading...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(true);
        pDialog.show();

    }

    @Override
    protected Boolean doInBackground(Void... arg0) {

        addlist();
        return null;

    }

    @Override
    protected void onPostExecute(Boolean result) {
        super.onPostExecute(result);
        pDialog.dismiss();
        updateList();

    }
}

private void updateList() {

    ListAdapter adapter = new SimpleAdapter(getActivity(), mCommentList,
            R.layout.fragment_status, new String[] {
            TAG_CAT}, new int[] {
            R.id.categ });

    // Toast.makeText(getActivity(), "Am Clicked", Toast.LENGTH_LONG).show();

    setListAdapter(adapter);


}


public void addlist() {

    mCommentList = new ArrayList<HashMap<String, String>>();

    DatabaseHandler myDbHelper = new DatabaseHandler(getActivity());
    myDbHelper.open();

    Cursor c = myDbHelper.fetchOption();

    if(c!=null ){
        c.moveToFirst();
        while(  c.isAfterLast() == false )
        {
            HashMap<String, String> map = new HashMap<String, String>();
            String des = c.getString(0).toString();
            map.put(TAG_CAT, des);
            mCommentList.add(map);
            c.moveToNext();
        }
    }
}

@Override
    public void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        Toast.makeText(getActivity(), "Am Clicked", Toast.LENGTH_LONG).show();
    }
}

activity_list.xml

<!-- language: lang-xml -->
    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#fff" >
    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:background="#fff"
        android:divider="@drawable/list_divider"
        android:scrollbars="none" />
</RelativeLayout>

fragment_status.xml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginBottom="5dp"
android:stretchColumns="0,1">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="20dp"
    android:layout_marginTop="5dp"
    android:layout_marginBottom="5dp"
    android:gravity="center_vertical"
    android:orientation="vertical" >
    <TextView
        android:id="@+id/categ"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_gravity="left"
        android:gravity="center_vertical" />

</LinearLayout>
</ScrollView>

共有1个答案

施彬彬
2023-03-14

要检测listView行上的单击,而不是使用OnClickListener,您需要使用OnItemClickListener

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        // Add action here: e.g. open new fragment.            
    }
});

因为在您的例子中,您使用的是listfragment,所以您可以重写onlistitemclick()

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
}
 类似资料:
  • 我已经成功覆盖了FOSUserbundle的用户类,添加了一堆属性。但是当我尝试添加“类型”属性时,您可以在下面看到,我有以下异常: 属性“Types”和方法“add typ()”/“remove typ()”、“addType()”/“remove type()”、“setTypes()”、“types()”、“__set()”或“__call()”都不存在,并且在类“advert projec

  • 本文向大家介绍Dapper.NET 列表扩展,包括了Dapper.NET 列表扩展的使用技巧和注意事项,需要的朋友参考一下 示例 数据库查询中的一个常见情况IN (...)是在运行时在此处生成列表。大多数RDBMS对此没有一个很好的隐喻-并且没有通用的跨RDBMS解决方案。相反,dapper提供了一些温和的自动命令扩展。所需要的只是提供的参数值IEnumerable。涉及的命令@foo将扩展为(@

  • 扩展说明 将 Invoker 接口转换成业务接口。 扩展接口 org.apache.dubbo.rpc.ProxyFactory 扩展配置 <dubbo:protocol proxy="xxx" /> <!-- 缺省值配置,当<dubbo:protocol>没有配置proxy属性时,使用此配置 --> <dubbo:provider proxy="xxx" /> 已知扩展 org.apache.

  • 问题内容: 我想将一个字符串添加到列表中: 但它打印。这是为什么? 问题答案: 该函数是就地函数,即它将对原始列表本身进行更改。来自文档 通过添加 给定 列表中的所有项目来扩展列表;等效于a [len(a):] =L。 因此,您无需将其重新分配回列表变量。 你可以做 然后当您打印时 更好的方法 如下所述使用是更好的方法。

  • 我试图在JavaFX中执行以下操作。我正在用画布在屏幕上画东西,我希望发生以下事情: 当我点击画布表面时(比如快速按下并释放):有些事情发生了 当我在画布表面拖动时(如按住并移动,然后释放):会发生其他事情 但是如果我拖动,我希望它排除单击操作,所以如果我拖动,如果我单击,会发生什么事情,而不应该发生。不幸的是,当我释放鼠标时,释放和单击事件都会启动,即使我拖动鼠标。

  • JVM规范表明JVM堆栈可以是固定大小的,也可以是动态扩展的。 -Xss JVM选项允许设置固定大小,如果我没有设置这个选项是设置默认值(大约512-2048k),但是如何告诉JVM在需要时动态分配它的堆栈呢? 如果我不能设置动态大小选项,那么设置一个大的Xss值(比如说20M)实际上会为JVM中的每个线程分配20MB内存吗?还是动态分配的内存会被限制在20MB?