2016-01-03 64 views
3

我有一个自定义列表视图。列表视图的每一行都包含一个复选框,2个文本视图和一个图像视图。我一直在点击列表视图的任何一行打开另一个活动,但onItemClick根本不工作。 列表视图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); 
    } 

    //... 
} 

是因为我在列表中有一个复选框吗?因为我已经为其他列表视图应用了相同的方法,并且它们完美地工作。

+0

把这个属性**机器人:可点击=“真” **在XML中的ListView标签 – WiFi

+0

@WiFi没有工作。 – TeeKay

+0

@TomHehir无论你刚刚说的话都已经被照顾到了。 – TeeKay

回答

0

尝试塞汀您的复选框不可作为焦点,像这样:

android:focusable="false" 
android:focusableInTouchMode="false" 

希望它能帮助。

在布局XML
+0

工作。但在这个如果我们点击复选框,没有任何反应。你能告诉我一个办法吗? – TeeKay

+0

[this](http://stackoverflow.com/questions/1709166/android-listview-elements-with-multiple-clickable-buttons)会帮助你,如果你想你的列表项目控件有事件。 –

+0

谢谢这么多!为我工作:) – TeeKay

0

,这个属性添加到根布局

android:descendantFocusability="blocksDescendants" 

如果ListView控件有按钮或排序的重点是针对你的情况的项目是复选框 ,这增加了复选框

android:focusable="false" 
android:focusableInTouchMode="false" 
+0

工作。但在这个如果我们点击复选框,没有任何反应。你能告诉我一个办法吗? – TeeKay

+0

在您的适配器类 –

+0

中设置onClick监听器CheckBox的onClick监听器 –

0

您传递错误的类上下文。

意图意图=新意图(Main.this,Second.class);

startActivity(intent);

和你的类是SavedAddress2

将其更改为

意向意图=新意图(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); 
    } 

    //... 
} 

让我知道这对你的作品:)