ListView与图像适配器

时间:2013-10-05 03:33:47

标签: android listview

我在列表视图中有一个列表项。如果我点击第一项,我将启动活动并将显示一些图像。如果我点击第二个列表项,我将开始另一个活动,并将显示一些图像集。这是列表视图代码。 包com.example.per.app;

public class AlbumListActivity extends Activity {

    public String[] mListInfo = { "1st Month", "2nd Month", "3rd Month",
            "4th Month", "5th Month", "6th Month", "7th Month", "8th Month",
            "9th Month", "10th Month", "11th Month", "12th Month" };
    public ListView mList = null;
    public Intent mLaunch = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.list_album);
        mList = (ListView) findViewById(R.id.list_view);
        ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(
                getApplicationContext(), android.R.layout.simple_list_item_1,
                mListInfo);
        mList.setAdapter(mAdapter);
        mList.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {

                switch (arg2) {
                case 0:
                    mLaunch = new Intent(getApplicationContext(),FirstMonthActivity.class);
                    startActivity(mLaunch);
                }
            }

        });

    }
    public class ImageAdapter extends BaseAdapter {
        private Context mContext;

        public ImageAdapter(Context c) {
            mContext = c;
        }

        public int getCount() {
            return mThumbIds.length;
        }

        public Object getItem(int position) {
            return null;
        }

        public long getItemId(int position) {
            return 0;
        }

        // create a new ImageView for each item referenced by the Adapter
        public View getView(int arg0, View arg1, ViewGroup arg2) {
            ImageView imageView;
            if (arg1 == null) { // if it's not recycled, initialize some
                                // attributes
                imageView = new ImageView(mContext);
                imageView.setLayoutParams(new GridView.LayoutParams(363, 363));
                imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
                imageView.setPadding(0, 0, 0, 0);
            } else {
                imageView = (ImageView) arg1;
            }
            imageView.setImageResource(mThumbIds[arg0]);
            return imageView;
        } // references to our images

        Integer[] mThumbIds = { R.drawable.sample0, R.drawable.sample1,
                R.drawable.sample2, R.drawable.sample3, R.drawable.sample4,
                R.drawable.sample5, R.drawable.sample6, R.drawable.sample7,
                R.drawable.sample8, R.drawable.sample9 };
    }
}

我需要在视图中维护List项目的ImageAdapater类吗?因为对于每个List项目我想要显示不同的图像集。

目前我只添加了Case 0,我将添加Case 1 case2 case3 ... case 12.因此我必须启动12个活动。在每个活动中我想显示不同的图像集。

1 个答案:

答案 0 :(得分:1)

你的问题不明确。我认为没有必要发起12项活动。您只需编写一个活动,当您点击列表项中的活动时,您可以直接传递一个可绘制的int数组,以用作下一个活动中的图像集。

以下是您可以尝试的示例代码....

在你的活动列表中你可以保留一些像这样的可绘制的Arraylist,所以对于你的情况你可能需要12个这样的ArrayList。

ArrayList<Integer> thumb1list = new ArrayList<Integer>();
        thumb1list.add(R.drawable.ic_launcher);
        thumb1list.add(R.drawable.ic_launcher);
        thumb1list.add(R.drawable.ic_launcher);

然后当您点击列表项时,然后启动您的第二个活动

Intent intent = new Intent(MainActivity.this , Second.class);
        intent.putIntegerArrayListExtra("key", thumb1list);
        startActivity(intent);

最后在你的第二个活动中,像这样

捕获上面的Integer ArrayList
ArrayList<Integer> Array = getIntent().getExtras().getIntegerArrayList("key");

然后,您可以在gridview或任何您喜欢的任何内容中加载这些图像。