0

我正在尝试单击列表条目。My List 是一个自定义列表视图,其中的数据是从 ArrayAdapter 中提取的。该列表显示了 Array 条目的 3 个部分和一张图片,但我想将这些项目和数组条目的其余部分发送到下一个活动,以显示有关所选项目的更多信息。

下面是我的类,里面有适配器。您将看到一个注释部分 /** **/ 我一直在试图弄清楚如何将这些项目放入,但我似乎无法弄清楚。每本书都有 12 个属性,但在单击以获取更多信息之前,listView 中只显示了 4 个。

我正在使用 Viewholder,所以我不确定我是否会影响我,但我确实计划在单击项目之前在列表视图中有一个相当长的列表。

public class Novels extends ListActivity{

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

        setListAdapter(new NovelAdapter(this, R.layout.list_item, NovelsStore.getNovels()));

        getActionBar().setDisplayHomeAsUpEnabled(true);
    }

    public Novels() {
    }

    public class NovelAdapter extends ArrayAdapter<Book> {

        LayoutInflater layoutInflater;

        public NovelAdapter(Context context, int textViewResourceId, List<Book> novels) {
            super(context, textViewResourceId, novels);
            layoutInflater = LayoutInflater.from(context);
        }

        @Override
        public View getView(final int position, View convertView, ViewGroup parent){
            ViewHolder holder;
            Book novels = getItem(position);

            // if no references in the view
            if (convertView == null) {
                convertView = layoutInflater.inflate(R.layout.list_item, null);

                // put them into a holder
                holder = new ViewHolder();

                holder.tvTitle = (TextView) convertView.findViewById(R.id.tvTitle);
                holder.tvSeries = (TextView) convertView.findViewById(R.id.tvSeries);
                holder.tvEra = (TextView) convertView.findViewById(R.id.tvEra);
                holder.ivBookImage = (ImageView) convertView.findViewById(R.id.ivBookImage);

                //set the view tag
                convertView.setTag(holder);
            } else {
                // in case we have a recycled view, just get the Tag
                holder = (ViewHolder) convertView.getTag();
            }

            //Assign Property to the TextViews
            holder.tvTitle.setText(novels.getTitle());
            holder.tvSeries.setText(novels.getSeries());
            holder.tvEra.setText(novels.getEra());
            holder.ivBookImage.setImageResource(novels.getBookImage());

            return convertView;
        }

        public class ViewHolder {
            public TextView tvTitle;
            public TextView tvSeries;
            public TextView tvEra;
            public ImageView ivBookImage;
        }
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                // If app icon in the action bar gets clicked; go back
                onBackPressed();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
}

对此的任何帮助都会很棒!

4

1 回答 1

0

如果可以的话,您实际上可以将Book对象发送到,您可以将整个对象放入 Intent 中。像这样的东西positionBookserializable

@Override 
protected void onListItemClick(ListView listView, View view, int position, long id) { 
    super.onListItemClick(listView, view, position, id); 

    Intent i = new Intent(getApplicationContext(), SingleItemView.class); 
    i.putExtra("my_book", NovelsStore.getNovels().get(position)); 
    startActivity(i); 
}

你可以SingleItemView像下面这样得到那个对象,

Book b = getIntent().getExtra("my_book");

你应该做空检查。

于 2014-09-22T03:35:21.660 回答