[英]ListView Item Open New Activity
為了學習Android開發,我仍在關注一些教程,我正在努力開展新的活動。 我只能打開一個活動,實際上ListView
上的所有項目都打開了一個活動,這對於位置0(第一個項目)中的ListView
項(而不是全部)非常ListView
。
我的代碼如下:
// Listen for ListView Item Click
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(mContext, MyActivity1.class);
mContext.startActivity(intent);
}
});
return view;
}
如您所見,MyActivity1.class可以很好地打開,但是如果我有一個名為MyActivity2的第二個類,應該由位置1(第二個項)中的listview項打開,該怎么辦? 還有(View arg0)是什么意思? 我找不到適當的解釋嗎?
使用listview OnItemClickListener
listView.setOnItemClickListener( new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)
{
switch(positon)
{
case 0:
Intent intent = new Intent(mContext, MyActivity1.class);
mContext.startActivity(intent);
break;
case 1:
Intent intent = new Intent(mContext, MyActivity2.class);
mContext.startActivity(intent);
break;
}
}
});
position
是列表項的索引。 因此,您可以根據索引開始相應的活動。
沒有開關盒的另一種方式
String[] classes ={"MyActivity1","MyActivity2"};
然后在onItemClick
String value = classes[position];
Class ourClass =Class.forName("packagename."+value);
Intent intent = new Intent(mContext,ourClass);
mContext.startActivity(intent);
您可以使用Itemclick列表器。
listviewOBJ.setOnItemClickListener( new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)
{
}
});
在這里,您可以使用int position
來確定單擊哪個項目。
如果我的理解是正確的,那么這里是您的答案:
對您的主要活動實施OnItemClickListener
:然后將偵聽器設置為listview : listView.setOnItemClickListener(this);
最后:
private OnItemClickListener mOnGalleryClick = new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
switch(positon)
{
case 0:
Intent intent = new Intent(mContext, MyActivity1.class);
mContext.startActivity(intent);
break;
case 1:
Intent intent = new Intent(mContext, MyActivity2.class);
mContext.startActivity(intent);
break;
}
}
};
public void onClick(View arg0) {
當您單擊某物時,將調用onClick
,並且您單擊的是arg0
(您可以將其稱為view
, arg0
是如此無用)。
通常,在Buttons
, Views
中通常使用此回調,但不能與ListView
一起使用。
如果要在單擊列表視圖中的項目時打開某些內容,則應使用setOnItemClickListener
!
在AdapterView.OnItemClickListener
您具有AdapterView<?> parent, View view, int position, long id
參數。
從android doc:
當您編寫onItemClick
您應該記住自己在一個匿名類中! 因此,當您需要將上下文傳遞給new Intent
時,就不能使用this
pastesList.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
Intent intent = null;
switch (position)
{
case 0:
intent = new Intent(ActivityClass.this, Class1.class);
break;
case 1:
intent = new Intent(ActivityClass.this, Class2.class);
break;
default:
return;
}
startActivity(intent);
}
});
這條線
ActivityClass.this
當你需要使用的類的實例用於ActivityClass
(此時應更換ActivityClass
與類名),但它直接使用您不能訪問this
其在這里是指new AdapterView.OnItemClickListener()
在您的代碼中,您使用mContext
我不知道它是什么,但是我想它是一個上下文。
下次您沒有此變量時,如果需要,請遵循我的建議。
您要使用的是AdapterView.OnItemClickListener
。
final ListView list = ...;
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(mContext, MyActivity1.class);
if (position == 1) {
intent = new Intent(mContext, MyActivity2.class);
}
startActivity(intent);
}
});
lv.setOnItemClickListener(n## Heading ##ew OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// When clicked, show a toast with the TextView text
if(position == 1) {
//code specific to first list item
Intent myIntent = new Intent(view.getContext(), Html_file1.class);
startActivityForResult(myIntent, 0);
}
if(position == 2) {
//code specific to 2nd list item
Intent myIntent = new Intent(view.getContext(), Html_file2.class);
startActivityForResult(myIntent, 0);
}
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.