ListView OnItemClickListener不使用自定义数组适配器

时间:2017-02-06 18:17:18

标签: android listview

您好我一直在研究需要使用不同类型的列表视图项的Android应用程序为此我实现了自定义数组适配器来处理多个自定义列表项一次这里是我的代码片段:
自定义数组适配器

public class QuestionsCustomAdapter extends ArrayAdapter {
public static final int ImageQuestion=0;
public static final int TextQuesiton=1;
public static final int VideoQuestion=2;


private List<ListViewItem> questions;
private LayoutInflater mInflater;

public QuestionsCustomAdapter(Activity activity,int res,List<ListViewItem> questions){
    super(activity,res,questions);
    mInflater=(LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    this.questions=questions;
}
@Override
public int getCount() {
    return questions.size();
}

@Override
public Object getItem(int position) {
    return questions.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

public Integer getItemViewType1(int position){
    return questions.get(position).getType();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    CustomViewHolder viewHolder=null;

    int listViewItemType=getItemViewType1(position);

        if(listViewItemType==ImageQuestion){
            convertView=mInflater.inflate(R.layout.card_view_image,null);
            ListViewItem listViewItem=questions.get(position);
            ((TextView)convertView.findViewById(R.id.imageAnswer2)).setText(listViewItem.getAnswer1());
            ((TextView)convertView.findViewById(R.id.imageAnswer3)).setText(listViewItem.getAnswer2());
            ((TextView)convertView.findViewById(R.id.imageAnswer4)).setText(listViewItem.getAnswer3());
            ((TextView)convertView.findViewById(R.id.imageAnswer5)).setText(listViewItem.getAnswer4());
            ((TextView)convertView.findViewById(R.id.imageQuestionText)).setText(listViewItem.getQuestion());
            Bitmap bitmap= BitmapFactory.decodeFile(listViewItem.getImageAndVideoView());
            ((ImageView)convertView.findViewById(R.id.cardImage)).setImageBitmap(bitmap);
            ((ImageView)convertView.findViewById(R.id.cardImage)).setScaleType(ImageView.ScaleType.FIT_XY);
            ((TextView)convertView.findViewById(R.id.rightImageAnswer)).setText("Right answer: "+listViewItem.getRightAnswer());
        }else if(listViewItemType==TextQuesiton){
            convertView=mInflater.inflate(R.layout.card_view,null);
            ListViewItem listViewItem1=questions.get(position);
            ((TextView)convertView.findViewById(R.id.answer2)).setText(listViewItem1.getAnswer1());
            ((TextView)convertView.findViewById(R.id.answer3)).setText(listViewItem1.getAnswer2());
            ((TextView)convertView.findViewById(R.id.answer4)).setText(listViewItem1.getAnswer3());
            ((TextView)convertView.findViewById(R.id.answer5)).setText(listViewItem1.getAnswer4());
            ((TextView)convertView.findViewById(R.id.questionText)).setText(listViewItem1.getQuestion());
            ((TextView)convertView.findViewById(R.id.rightAnswer)).setText("Right answer:"+listViewItem1.getRightAnswer());
        }else if(listViewItemType==VideoQuestion){
            convertView=mInflater.inflate(R.layout.card_view_video,null);
            ListViewItem listViewItem2=questions.get(position);
            ((TextView)convertView.findViewById(R.id.videoAnswer2)).setText(listViewItem2.getAnswer1());
            ((TextView)convertView.findViewById(R.id.videoAnswer3)).setText(listViewItem2.getAnswer2());
            ((TextView)convertView.findViewById(R.id.videoAnswer4)).setText(listViewItem2.getAnswer3());
            ((TextView)convertView.findViewById(R.id.videoAnswer5)).setText(listViewItem2.getAnswer4());
            ((TextView)convertView.findViewById(R.id.videoQuestionText)).setText(listViewItem2.getQuestion());
            ((VideoView)convertView.findViewById(R.id.cardViewVideo)).setVideoURI(Uri.parse(listViewItem2.getImageAndVideoView()));
            ((VideoView)convertView.findViewById(R.id.cardViewVideo)).seekTo(100);
            ((TextView)convertView.findViewById(R.id.rightVideoAnswer)).setText("Right Answer: "+listViewItem2.getRightAnswer());
        }

    return convertView;
}

}
这是我的ListView监听器:

 listView=(ListView)findViewById(R.id.listView);
 customAdapter=new QuestionsCustomAdapter(this,0,questions1);
 listView.setAdapter(customAdapter);

 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            Bundle position=new Bundle();
            ListViewItem itemValue=(ListViewItem) listView.getItemAtPosition(i);
            Integer questionType=itemValue.getType();


            String[] questionArray={itemValue.getQuestion(),itemValue.getAnswer1(),itemValue.getAnswer2(),itemValue.getAnswer3(),
            itemValue.getAnswer4(),itemValue.getRightAnswer(), String.valueOf(i)};
            position.putStringArray("question",questionArray);
            position.putString("type","edit");
            position.putString("questionType",String.valueOf(itemValue.getType()));
            if(itemValue.getType()==0){
                position.putString("image",itemValue.getImageAndVideoView());
            }else if(itemValue.getType()==2){
               position.putString("video",itemValue.getVideoView());
            }
            DialogFragment editQuestionFragment=EditQuestionFragment.newInstance();

            editQuestionFragment.setArguments(position);
            editQuestionFragment.show(getFragmentManager(),"dialog");
        }
    });

此听众使用 card_view_image card_view ,但 card_view_video 项目不响应收听者。

0 个答案:

没有答案