我正在使用npm install eslint --save-dev
来显示ListView
中的数据。每个cursor
行都使用以下ListView
定义的自定义布局。
当我单击ID为template_item.xml
的{{1}}时,我想获取包含该TextView
的{{1}}的行位置。我需要行号,以便可以从tv_item_name
中提取其他列,因此使用ListView
不足以满足我的需要。
我正在努力寻找一种在TextView
侦听器中执行此操作的方法。
到目前为止,我已经尝试过:
cursor
-光标似乎总是在最后一行,因此如果光标有4行,无论我单击哪个项目名称,调用TextView.getString()
都会返回例如3。onClick
,Cursor c = myAdapter.getCursor()
,然后是c.getPosition()
,但是从这里我无法获得所单击项目的位置。 LinearLayout ll = (LinearLayout) v.getParent()
返回-1。非常感谢您的帮助。
LinearLayout ll2 = (LinearLayout) ll.getParent()
ListView lv = (ListView) ll2.getParent()
lv.getSelectedItemPosition()
template_item.xml
我的片段摘录
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tv_item_heading"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_weight="5">
<TextView
android:id="@+id/tv_item_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="4"/>
<TextView
android:id="@+id/tv_item_quantity"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"/>
</LinearLayout>
</LinearLayout>
答案 0 :(得分:0)
尝试过的方法1很好:
Cursor cursor = myAdapter.getCursor()
...
使用OnItemClickListener,以便可以访问该位置:
public void onItemClick(AdapterView<?> arg0, View view, int position, long id) {
Cursor cursor = myAdapter.getCursor();
cursor.moveToPosition(position);
...
}
如果要坚持使用onClickListener,请在bindView内执行以下操作:
public void bindView(View view, Context context, Cursor cursor) {
...
view.setTag(Integer.valueOf(cursor.getPosition());
}
[或在您当前关闭的任何视图(如“ tvItem”)上设置标签。但是在单个TextView上设置OnClickListener可能会使用户难以点击?]
然后在onClick方法中执行以下操作:
public void onClick(View v) {
Cursor cursor = myAdapter.getCursor();
int position = (Integer) v.getTag();
cursor.moveToPosition(position);
...
}
值得一提的是,如果滚动性能成为问题,则有必要研究“ View Holder Pattern”或使用实质上与“ View Holder Pattern”一起提供的RecyclerView。