Android Listview和baseadapter

Android Listview和baseadapter,android,listview,Android,Listview,我已经使用baseadapter创建了listview。 我想去不同的活动时,点击不同的项目,但无法获得项目的价值。所以任何人都可以帮助我如何做。 例如,单击项目x时,我要执行活动1 单击项目say z,我想转到AVActivity2 多谢各位 以下是代码: public class homeScreen extends Activity{ ListView list1; @Override protected void onCreate(Bundle savedIn

我已经使用baseadapter创建了listview。 我想去不同的活动时,点击不同的项目,但无法获得项目的价值。所以任何人都可以帮助我如何做。 例如,单击项目x时,我要执行活动1 单击项目say z,我想转到AVActivity2 多谢各位

以下是代码:

    public class homeScreen extends Activity{
ListView list1; 

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.homescreen);

        list1=(ListView)findViewById(R.id.spacelist);
        list1.setAdapter(new MySimpleAdapter(this));
        list1.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View v, int position,long id) {
                // TODO Auto-generated method stub      
                Intent i=new Intent(homeScreen.this, privateSpaceList.class);
                startActivity(i);
            }
        });
    }
}

class SingleRow{

    String title;
    int image;
    public SingleRow(String title,int image) {
        // TODO Auto-generated constructor stub
        this.title=title;
        this.image=image;
    }
}
 class MySimpleAdapter extends BaseAdapter{

    ArrayList<SingleRow> list;
    Context context;
    public MySimpleAdapter(Context c) {
        // TODO Auto-generated constructor stub
        context=c;
        list=new ArrayList<SingleRow>();
        //putting actual values in array
        Resources res=c.getResources();
        String[] titles=res.getStringArray(R.array.titles);
        int[] images={R.drawable.error,R.drawable.ic_launcher,R.drawable.ic_launcher};

        //putting single row in arraylist
        for(int i=0;i<3;i++)
        {
            list.add(new SingleRow(titles[i], images[i]));
        }
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return list.size();
    }
    @Override
    public Object getItem(int i) {
        // TODO Auto-generated method stub
        return list.get(i);
    }
    @Override
    public long getItemId(int i) {
        // TODO Auto-generated method stub
        return i;
    }

    //called when want to display row
    @Override
    public View getView(int i, View view, ViewGroup viewgroup) {
        // TODO Auto-generated method stub
        LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View row=inflater.inflate(R.layout.single_row,viewgroup,false);
        TextView title=(TextView)row.findViewById(R.id.label);
        ImageView image=(ImageView)row.findViewById(R.id.imageView);
        SingleRow temp=list.get(i);
        title.setText(temp.title);
        image.setImageResource(temp.image);
        return row;
    }
}
公共类主屏幕扩展活动{
列表视图列表1;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(右布局主屏幕);
list1=(ListView)findViewById(R.id.spacelist);
列表1.setAdapter(新的mysimpledapter(this));
list1.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView arg0,视图v,内部位置,长id){
//TODO自动生成的方法存根
意图i=新意图(homeScreen.this、privateSpaceList.class);
星触觉(i);
}
});
}
}
类单列{
字符串标题;
int图像;
公共单行(字符串标题,整型图像){
//TODO自动生成的构造函数存根
这个.title=title;
这个。图像=图像;
}
}
类MySimpleAdapter扩展了BaseAdapter{
数组列表;
语境;
公共mysimpledapter(上下文c){
//TODO自动生成的构造函数存根
上下文=c;
列表=新的ArrayList();
//将实际值放入数组
Resources res=c.getResources();
String[]titles=res.getStringArray(R.array.titles);
int[]images={R.drawable.error,R.drawable.ic_launcher,R.drawable.ic_launcher};
//将单行放入arraylist

对于(int i=0;i我认为在适配器类中的getView上实现ClickListener是一种简单的方法。或者,在您需要存储列表的情况下,也可以将此列表添加到适配器中,此时:

@Override
public void onItemClick(AdapterView<?> arg0, View v, int position,long id) {   
  Intent intent = new Intent(homeScreen.this, privateSpaceList.class);
  yourList.get(position) // your data
  startActivity(intent);
}
@覆盖
public void onItemClick(AdapterView arg0,视图v,内部位置,长id){
意向意向=新意向(homeScreen.this,privateSpace.class);
yourList.get(position)//您的数据
星触觉(意向);
}
你得到你的目标了

或者像这样:

    @Override
    public void onItemClick(AdapterView<?> arg0, View v, int position,long id) {  

    switch(position) {

      case 1:
          Intent intent = new Intent(homeScreen.this, privateSpaceList.class);
          startActivity(intent);
          break;

      }

    }
@覆盖
public void onItemClick(AdapterView arg0,视图v,内部位置,长id){
开关(位置){
案例1:
意向意向=新意向(homeScreen.this,privateSpace.class);
星触觉(意向);
打破
}
}
试试这个

list1.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View v, int position,long id) {
            // TODO Auto-generated method stub  
            TextView title=(TextView)v.findViewById(R.id.label);    
             if(title.getText().toString().trim().equals("Item x"))
             {
                  Intent i=new Intent(homeScreen.this, activity1.class);
                  startActivity(i);
             }
             else if(title.getText().toString().trim().equals("Item y"))
             {
                  Intent i=new Intent(homeScreen.this, activity2.class);
                  startActivity(i);
             }
             else if(title.getText().toString().trim().equals("Item z"))
             {
                  Intent i=new Intent(homeScreen.this, activity3.class);
                  startActivity(i);
             }
        }
    });
list1.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView arg0,视图v,内部位置,长id){
//TODO自动生成的方法存根
TextView title=(TextView)v.findViewById(R.id.label);
if(title.getText().toString().trim().equals(“项x”))
{
意图i=新意图(主屏幕.this,activity1.class);
星触觉(i);
}
else if(title.getText().toString().trim().equals(“项y”))
{
意向i=新意向(主屏幕。此,活动2。类);
星触觉(i);
}
else if(title.getText().toString().trim().equals(“项z”))
{
意向i=新意向(主屏幕。此,活动3。类);
星触觉(i);
}
}
});

在您的物品上单击将代码更改为

list1.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> arg0, View v, int position,long id) {
        // TODO Auto-generated method stub  
       String[] titles=res.getStringArray(R.array.titles); 
         if((titles[position]).equalsIgnoreCase("Itemx"))
         {
              Intent i=new Intent(homeScreen.this, privateSpaceList.class);
              startActivity(i);
         }
         else if((titles[position]).equalsIgnoreCase.equals("Itemy"))
         {
              Intent i=new Intent(homeScreen.this, activity2.class);
              startActivity(i);
         }
         else if((titles[position]).equalsIgnoreCase.equals("Itemz"))
         {
              Intent i=new Intent(homeScreen.this, activity3.class);
              startActivity(i);
         }
    }
});
list1.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView arg0,视图v,内部位置,长id){
//TODO自动生成的方法存根
String[]titles=res.getStringArray(R.array.titles);
如果((标题[职位])等信号情况(“项目X”))
{
意图i=新意图(homeScreen.this、privateSpaceList.class);
星触觉(i);
}
如果((头衔[职位])相等,则等于(“项目”)
{
意向i=新意向(主屏幕。此,活动2。类);
星触觉(i);
}
如果((标题[位置]).equalsIgnoreCase.equals(“项目Z”))
{
意向i=新意向(主屏幕。此,活动3。类);
星触觉(i);
}
}
});
像这样试试

这是一种非常简单的方法,无需太多条件。

String[] Classtitles=new String[]{"Activity1","Activity2","Activity3"};
定义所有活动类名的数组。但所有活动都应在同一个包中。

String[] Classtitles=new String[]{"Activity1","Activity2","Activity3"};
获取包名

final String packageName = this.getClass().getPackage().getName();
并在onItemClick()中更改

list1.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView arg0,视图v,内部位置,长id){
试一试{
c类=Class.forName(packageName+“+”类标题[位置]);
startActivity(新意图(homeScreen.this,c));
}catch(classnotfounde异常){
Toast.makeText(homeScreen.this,String.valueOf(e),5000.show();
}
}
});

希望这将对您有所帮助。

设置行布局可单击您可以在侦听器中打开位置值。