列表视图 onItemClick 不起作用
List View onItemClick is not working
我有一个自定义列表视图。列表视图的每一行都包含一个复选框、2 个文本视图和一个图像视图。单击列表视图的任何行时,我一直试图打开另一个 activity,但 onItemClick 根本不起作用。
public class SavedAddress2 extends AppCompatActivity implements AdapterView.OnItemClickListener {
private Toolbar toolbar;
private ListView listView1;
List<list_addr> rowitems;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.saved_address2);
toolbar = (Toolbar) findViewById(R.id.tool_bar3);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
rowitems = new ArrayList<list_addr>();
listView1 = (ListView) findViewById(R.id.addr_list);
list_addr_adapter adapter = new list_addr_adapter(this,
R.layout.items_sav_addr2, SavedAddress.rowitems);
listView1.setAdapter(adapter);
listView1.setOnItemClickListener(this);
}
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(Main.this,Second.class);
startActivity(intent);
}
//...
}
是否因为我在列表中有一个复选框?因为我对其他列表视图应用了相同的方法并且它们工作得很好。
尝试将您的复选框设置为不可聚焦,如下所示:
android:focusable="false"
android:focusableInTouchMode="false"
希望对您有所帮助。
在您的布局 xml 中,将此 属性 添加到根布局
android:descendantFocusability="blocksDescendants"
如果列表视图有按钮或排序,焦点在你的项目上,它是复选框
并将其添加到复选框
android:focusable="false"
android:focusableInTouchMode="false"
您传递了错误的 class 上下文。
Intent intent = new Intent(Main.this,Second.class);
startActivity(intent);
并且您的 class 是 SavedAddress2
改为
Intent intent = new Intent(SavedAddress2.this,Second.class);
startActivity(intent);
public class SavedAddress2 extends AppCompatActivity implements AdapterView.OnItemClickListener {
private Toolbar toolbar;
private ListView listView1;
List<list_addr> rowitems;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.saved_address2);
toolbar = (Toolbar) findViewById(R.id.tool_bar3);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
rowitems = new ArrayList<list_addr>();
listView1 = (ListView) findViewById(R.id.addr_list);
list_addr_adapter adapter = new list_addr_adapter(this,
R.layout.items_sav_addr2, SavedAddress.rowitems);
listView1.setAdapter(adapter);
listView1.setOnItemClickListener(this);
}
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(Main.this,Second.class);
startActivity(intent);
}
//...
}
让我知道这是否适合您!:)
我有一个自定义列表视图。列表视图的每一行都包含一个复选框、2 个文本视图和一个图像视图。单击列表视图的任何行时,我一直试图打开另一个 activity,但 onItemClick 根本不起作用。
public class SavedAddress2 extends AppCompatActivity implements AdapterView.OnItemClickListener {
private Toolbar toolbar;
private ListView listView1;
List<list_addr> rowitems;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.saved_address2);
toolbar = (Toolbar) findViewById(R.id.tool_bar3);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
rowitems = new ArrayList<list_addr>();
listView1 = (ListView) findViewById(R.id.addr_list);
list_addr_adapter adapter = new list_addr_adapter(this,
R.layout.items_sav_addr2, SavedAddress.rowitems);
listView1.setAdapter(adapter);
listView1.setOnItemClickListener(this);
}
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(Main.this,Second.class);
startActivity(intent);
}
//...
}
是否因为我在列表中有一个复选框?因为我对其他列表视图应用了相同的方法并且它们工作得很好。
尝试将您的复选框设置为不可聚焦,如下所示:
android:focusable="false"
android:focusableInTouchMode="false"
希望对您有所帮助。
在您的布局 xml 中,将此 属性 添加到根布局
android:descendantFocusability="blocksDescendants"
如果列表视图有按钮或排序,焦点在你的项目上,它是复选框 并将其添加到复选框
android:focusable="false"
android:focusableInTouchMode="false"
您传递了错误的 class 上下文。
Intent intent = new Intent(Main.this,Second.class);
startActivity(intent);
并且您的 class 是 SavedAddress2
改为
Intent intent = new Intent(SavedAddress2.this,Second.class);
startActivity(intent);
public class SavedAddress2 extends AppCompatActivity implements AdapterView.OnItemClickListener {
private Toolbar toolbar;
private ListView listView1;
List<list_addr> rowitems;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.saved_address2);
toolbar = (Toolbar) findViewById(R.id.tool_bar3);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
rowitems = new ArrayList<list_addr>();
listView1 = (ListView) findViewById(R.id.addr_list);
list_addr_adapter adapter = new list_addr_adapter(this,
R.layout.items_sav_addr2, SavedAddress.rowitems);
listView1.setAdapter(adapter);
listView1.setOnItemClickListener(this);
}
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(Main.this,Second.class);
startActivity(intent);
}
//...
}
让我知道这是否适合您!:)