使用自定义列表视图时如何使用意图

Posted

技术标签:

【中文标题】使用自定义列表视图时如何使用意图【英文标题】:How to use intent when using custom listview 【发布时间】:2015-12-03 15:56:54 【问题描述】:

如何使用与自定义listview 不同的意图活动。

代码

@SuppressLint("NewApi")
public class MainActivity extends Activity 

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout);

    ActionBar actionBar = getActionBar();

    // set the icon
    actionBar.setIcon(R.drawable.excel);
    getActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#546E7A")));

    ArrayList<Excel> list = new ArrayList<Excel>();
    list.add(new Excel("Google", "android"));
    list.add(new Excel("Apple", "ios"));

    ListAdapter adapter = new ListAdapter(this, list);

    ListView listView = (ListView) findViewById(R.id.id_list);
    listView.setAdapter(adapter);

    // event handler click item of list
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() 

        @Override
            public void onItemClick(AdapterView arg0, View arg1,
            int position, long arg3) 
                    // call new layout with intent
                Intent intent = new Intent(MainActivity.this, Apple.class);
            startActivity(intent);

        
    );


当我点击所有项目时,代码只是查看 Apple.class 活动,如何运行不同的活动示例:

Item Google run Google.class

Item Apple 运行 Apple.class

【问题讨论】:

使用 if else 并开始适当的活动。 【参考方案1】:

根据您当前的代码使用

Intent intent;
if(position==0)
     intent = new Intent(MainActivity.this, Google.class);
else if(position==1)
   intent = new Intent(MainActivity.this, Apple.class);

startActivity(intent);

【讨论】:

【参考方案2】:
    public void onItemClick(AdapterView<?> parent, View view,
    int position, long id) 
    switch( position )
    
      case 0:  Intent newActivity = new Intent(this, Apple.class);     
             startActivity(newActivity);
             break;
      case 1:  Intent newActivity = new Intent(this, Google.class);     
              startActivity(newActivity);
             break;


    
 

【讨论】:

非常感谢。 ?【参考方案3】:

使用反射获取Class。类名必须包含packagename。这样。

try
               Class classType=Class.forName("com.zfeng.stackquesimg.Google");
                Intent intent=new Intent();
                intent.setClass(MainActivity.this,classType);
                startActivity(intent);
            catch (Exception e)
            
                e.printStackTrace();
            

【讨论】:

【参考方案4】:

这样试试

   listView.setOnItemClickListener(new AdapterView.OnItemClickListener() 

        @Override
            public void onItemClick(AdapterView arg0, View arg1,
            int position, long arg3) 
            switch(Position)
                
                  case 0:
                   //Call Google Intent
                 break;
                 case 1:
                    // call new layout with intent
                Intent intent = new Intent(MainActivity.this, Apple.class);
                 startActivity(intent);
                  break;
                default:
              // default code
               break;
              

        
    );

【讨论】:

以上是关于使用自定义列表视图时如何使用意图的主要内容,如果未能解决你的问题,请参考以下文章

我如何使用意图从列表视图转到下一个活动? [复制]

Android -- 使用自定义列表视图时如何使用 onlistitemclick() 函数

使用拆分字符串自定义共享按钮中的意图或如何拆分字符串并替换奇数逗号

如何在单击另一个视图(即按钮)时突出显示自定义列表视图

如何使用来自另一个活动的自定义适配器更新列表视图?

搜索过滤列表视图后如何开始新的意图?