Android系统。通过ListView打开新活动?

时间:2012-03-30 15:01:44

标签: android

我的Android应用程序存在问题。在我的应用程序中,我有一个ListView,其中的每个项目都包含一些文本和图像。我希望每个项目都能打开不同的布局。这些布局只包含一些简单的文本。但我似乎无法找到如何让我的项目(在ListView中)打开不同的布局。请帮忙!

package com.xxxxx;

import java.util.List;
import java.util.Vector;

import android.app.Activity;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.net.ParseException;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;


public class MainActivity extends ListActivity {
    private LayoutInflater mInflater;
    private Vector<RowData> data;
    RowData rd;

    static final String[] title = new String[] {
        "text", 
        "text", 
        "text",
        "text",
        "text",
    };

    static final String[] detail = new String[] {
        "text",
        "text",
        "text",
        "text",
        "text",
    };

    private Integer[] imgid = {
        R.drawable.image1,
        R.drawable.image2,
        R.drawable.image3,
        R.drawable.image4,
        R.drawable.image5,
    };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mInflater = (LayoutInflater) getSystemService(
        Activity.LAYOUT_INFLATER_SERVICE);
        data = new Vector<RowData>();
        for(int i=0;i<title.length;i++){

            try {
            rd = new RowData(i,title[i],detail[i]);
            } catch (ParseException e) {
            e.printStackTrace();
            }
            data.add(rd);
        }
        CustomAdapter adapter = new CustomAdapter(this, R.layout.list, R.id.title, data);
        setListAdapter(adapter);
        getListView().setTextFilterEnabled(true);
    }
    public void onListItemClick(ListView parent, View v, int position, long id) {           
        RowData item = (RowData) getListAdapter().getItem(position);
        Intent intent = new Intent(this, NewActivity.class);
        intent.putExtra("id", item.mId);
        startActivity(intent);
    }
}

private class RowData {
    protected int mId;
    protected String mTitle;
    protected String mDetail;
    RowData(int id,String title,String detail){
        mId=id;
        mTitle = title;
        mDetail=detail;
    }

    @Override
    public String toString() {
        return mId+" "+mTitle+" "+mDetail;
    }
}

private class CustomAdapter extends ArrayAdapter<RowData> {

    public CustomAdapter(Context context, int resource, 
        int textViewResourceId, List<RowData> objects) { 

        super(context, resource, textViewResourceId, objects);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {   

        ViewHolder holder = null;
        TextView title = null;
        TextView detail = null;
        ImageView i11=null;
        RowData rowData= getItem(position);
        if(null == convertView){
            convertView = mInflater.inflate(R.layout.list, null);
            holder = new ViewHolder(convertView);
            convertView.setTag(holder);
        }
        holder = (ViewHolder) convertView.getTag();
        title = holder.gettitle();
        title.setText(rowData.mTitle);
        detail = holder.getdetail();
        detail.setText(rowData.mDetail);                                                     

        i11=holder.getImage();
        i11.setImageResource(imgid[rowData.mId]);
        return convertView;
    }
}

private class ViewHolder {
    private View mRow;
    private TextView title = null;
    private TextView detail = null;
    private ImageView i11=null; 

    public ViewHolder(View row) {
        mRow = row;
    }
    public TextView gettitle() {
        if(null == title){
            title = (TextView) mRow.findViewById(R.id.title);
        }
        return title;
    }     

    public TextView getdetail() {
        if(null == detail){
            detail = (TextView) mRow.findViewById(R.id.detail);
        }
        return detail;
    }
    public ImageView getImage() {
        if(null == i11){
            i11 = (ImageView) mRow.findViewById(R.id.img);
        }
        return i11;
    }
}

这是我的新活动

import android.app.Activity;
import android.os.Bundle;

public class NewActivity extends Activity{

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

        getIntent().getExtras().getInt("id");
    }
}

1 个答案:

答案 0 :(得分:2)

你需要听取项目上的点击,所以在你返回转换视图之前会有类似的内容

convertView.setOnClickListenere(new OnClickListener(){
      public void onClick(View v) {
         Intent intent = new Intent(MainActivity.this, NewActivity.class);
         startActivity(intent);
      }
});