我有一个包含4个TextView的自定义ListView。现在,TextViews必须是可链接的。由于Linkify在ListView中不起作用,我创建了一个callIntent函数来查看链接是否可点击。但如果没有可点击的链接,我想开始一个新的活动。我使用以下代码:
lvMembersList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
final TextView txtLine1 = (TextView) arg1.findViewById(R.id.tv_member_details_line1);
final TextView txtLine2 = (TextView) arg1.findViewById(R.id.tv_member_details_line2);
final TextView txtLine3 = (TextView) arg1.findViewById(R.id.tv_member_details_line3);
final TextView txtLine4 = (TextView) arg1.findViewById(R.id.tv_member_details_line4);
txtLine1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
callIntent(1);
}
});
txtLine2.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
callIntent(2);
}
});
txtLine3.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
callIntent(3);
}
});
txtLine4.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
callIntent(4);
}
});
}}
现在,当我第一次点击某个项目时,TextView监听器就会被设置。单个点击仅在第二次之后有效。在这种情况下我该怎么办?
答案 0 :(得分:2)
将此代码放在适配器的getView()
方法中。在您的代码中,当您单击列表视图的一行时,将调用onItemClick
。
答案 1 :(得分:0)
为每个文本视图添加以下属性(布局中将用作自定义列表项的四个文本视图)
android:onClick="onTextView1_click"
- 您必须对所有4个文本视图执行此操作以单独跟踪点击事件 -
然后在代码中添加以下方法以在单击textview1
时触发public void onTextView1_click(View view)
{
final int position = (Integer) view.getTag();
//implementation (Which needs to be done when someone click textview1)
}
最重要的是,你必须在适配器类的getViewMethod中添加位置作为标记。这将有助于跟踪列表视图中单击的项目
holder.textView1.setTag(position);
你可以像我在“onTextView1_click(查看视图)”方法中指出的那样访问这个值“位置变量”
在列表视图中---&gt;
android:focusable="false"
在初始化列表视图后不久,在代码中添加“setItemsCanFocus(true)”。这表示可聚焦项目包含在列表视图中的每个项目中。
lvMembersList = (ListView) findViewById(R.id.NameOfListTView);
lvMembersList.setItemsCanFocus(true); // <---------[X]