自定义 ListView 中的可点击 TextView

3
我制作了自己定制的ListView,每行都有2个TextView
我想使每行中的textview可点击。因此,无论用户点击哪一个,它都会将其重定向到其他地方。
实际上,当用户单击ListView项目时,它会单击所有内容,并忽略textviews
总之,当我单击ListView项目时,我不想让Listview项目作出反应,而是希望Listview内部的Textview作出反应。
编辑:
这是我如何定制我的视图:
String[] from = {"value1", "value2"};
int[] to = {R.id.label, R.id.label2};
SimpleAdapter adapter = new SimpleAdapter(MainActivity.this, data, R.layout.rowlayout, from, to);

^ this。你到目前为止尝试了什么?你是向各个TextView添加了OnClickListeners还是覆盖了onListItemClick()? - crazylpfan
我还没有尝试过任何东西,我该尝试什么? - Alex
1
你应该使用继承自BaseAdapter或ArrayAdapter<T>的CustomAdapter来实现你的需求,而不是SimpleAdapter。 - Amit Gupta
2个回答

3
在您的适配器类中,在getview()方法内,您可以像这样执行单击操作:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;
    Holder holder = null;
    if (row  == null) {
        LayoutInflater vi = 
                (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        row = vi.inflate(R.layout.listitem, null);
        holder.txtTitle1 = (TextView) row.findViewById(R.id.heading1);
        holder.txtTitle2 = (TextView) row.findViewById(R.id.heading2);

        holder.txtTitle1 .setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
            }
        });

        holder.txtTitle2 .setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
            }
        });
    }
    return row;
}
/////
///////////

static class Holder {
    TextView txtTitle1;
    TextView txtTitle2;
}

2
set your TextView in your layot.xml

 <TextView
     android:id="@+id/YourID"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
           android:clickable="true"

/>

然后在您的自定义适配器上:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;
    Holder holder = null;
    if (row  == null) {
        LayoutInflater vi = 
                (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        row = vi.inflate(R.layout.youLayout, null);
        holder.txt1 = (TextView) row.findViewById(R.id.tx1);
        holder.txt2 = (TextView) row.findViewById(R.id.tx2);

       holder.txt1 .setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
//your statements            
}
        });

        holder.txt2 .setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
//your statements
            }
        });
    }
    return row;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接