项目点击列表器上的android列表视图
我的问题是我的列表onclick listener return LinearLayout不是文本视图。所以我不知道如何捕捉点击的项目 这就是简单的行xml项目点击列表器上的android列表视图,android,Android,我的问题是我的列表onclick listener return LinearLayout不是文本视图。所以我不知道如何捕捉点击的项目 这就是简单的行xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fi
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp">
<ImageView android:id="@+id/imgIcon"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_marginRight="15dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp" />
<TextView android:id="@+id/txtTitle"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:textStyle="bold"
android:textSize="22dp"
android:textColor="#000000"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp" />
</LinearLayout>
这是主要问题
listView1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
String item = ((TextView)view).getText().toString();
Log.w("item", item);
Toast.makeText(getBaseContext(), item, Toast.LENGTH_LONG).show();
}
});
listView1.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父视图、视图、整型位置、,
长id){
字符串项=((TextView)视图).getText().toString();
Log.w(“项目”,项目);
Toast.makeText(getBaseContext(),item,Toast.LENGTH_LONG.show();
}
});
此项导致程序崩溃,因为返回的视图是LinearLayout如何捕获LinearLayout中的文本视图 将onClick更改为:
public void onItemClick(AdapterView<?> parent, View view, int position,long id) {
TextView textView = (TextView) view.findViewById(R.id.txtTitle);
String item = textView.getText().toString();
Log.w("item", item);
Toast.makeText(getBaseContext(), item, Toast.LENGTH_LONG).show();
}
public void onItemClick(AdapterView父视图、视图视图、整型位置、长id){
TextView TextView=(TextView)view.findViewById(R.id.txtTitle);
String item=textView.getText().toString();
Log.w(“项目”,项目);
Toast.makeText(getBaseContext(),item,Toast.LENGTH_LONG.show();
}
重要的是,您首先需要从父线性布局中获取文本视图。您将收到父视图,您必须使用
((TextView)((LinearLayout)view).getChildAt(1)).getText().toString();
view.findViewById
然后继续
listView1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if(view !=null)
{
String item = ((TextView) view.findViewById(R.id.YOUR_VIEW_ID)).getText().toString();
Log.w("item", item);
Toast.makeText(getBaseContext(), item, Toast.LENGTH_LONG).show();
}
}
});
listView1.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
如果(视图!=null)
{
String item=((TextView)view.findViewById(R.id.YOUR_view_id)).getText().toString();
Log.w(“项目”,项目);
Toast.makeText(getBaseContext(),item,Toast.LENGTH_LONG.show();
}
}
});
在这里,listview项目中的几个可单击区域的问题得到了很好的解释:
在监听器中
public void onItemClick(AdapterView<?> parent, View view,int position, long id)
{
TextView tv = (TextView)view.findViewById(R.id.txtTitle)
Toast.makeText(RingSubCatActivity.this,tv.getText().toString(), Toast.LENGTH_SHORT).show();
}});
public void onItemClick(AdapterView父视图、视图视图、整型位置、长id)
{
TextView tv=(TextView)view.findViewById(R.id.txtTitle)
Toast.makeText(RingSubCatActivity.this,tv.getText().toString(),Toast.LENGTH_SHORT.show();
}});
使用view对象初始化textview并获取文本以在toast中显示它。这样做
字符串val=((文本视图)
view.findViewById(R.id.txtTitle)).getText.toString()
public void onItemClick(AdapterView父视图、视图视图、整型位置、长id)
{
TextView c=(TextView)view.findViewById(R.id.txtTitle);
字符串sel_item=c.getText().toString();
Toast.makeText(ringsubcativity.this,sel_项,Toast.LENGTH_SHORT).show();
}});
您需要做以下几件事:
- 使文本视图可单击
- 使文本视图可聚焦
- 将OnClick附加到TextView或onItemClick附加到listview
- 通过XML或代码,将换行线布局
设置为可查看性
到
在子项之后聚焦
- 一旦进入OnClick,您将拥有textview,或者如果您选择onitemclick路线,您将捕获重点项目李>
因此,您的解决方案是挖掘您收到的LinearLayout以获得所需的文本视图,或者修复LinearLayout以不接管焦点或单击本身。如果父视图是LinearLayout,您需要在父视图中找到您的文本视图, 检查下面的代码,我希望它将工作
String item = ((TextView) view.findViewById(R.id.txtTitle)).getText().toString();
您可以尝试使用
字符串项=(TextView)((LinearLayout)视图)代码>
这是根据此答案改编为
单击“我的列表”侦听器返回LinearLayout而不是文本视图
这就是它应该做的
我不知道如何捕获单击的项,这是简单的行xml
onItemClick()
方法的第二个参数是View
。这不是单击的视图
,而是适配器提供给列表视图
的该项目的视图
您可以在此视图上使用findViewById()
搜索内部视图
我看到您正在尝试获取项目视图的文本字符串。从适配器获取数据总是比从视图获取数据更好:
Object item = listAdapter.getItem(position);
String text = item.getSomeProperty();
是否从listview获取列表项??使用view.findViewById(R.id.TextViewID)
Object item = listAdapter.getItem(position);
String text = item.getSomeProperty();