gpt4 book ai didi

android - Listview setOnItemClickListener - 不适用于自定义 ListView ,但适用于简单 ListView

转载 作者:太空狗 更新时间:2023-10-29 15:55:23 32 4
gpt4 key购买 nike

我在单击列表项时获取 listview 项 时遇到问题。我得到了 simple listview(Arrayadapter) 的 listview item,但我遇到了 custom listview 的问题。

我正在使用

listview.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> myAdapter, View myView, int pos, long mylng) {

//String selectedFromList = (String) listview.getItemAtPosition(pos);
String selectedFromList = (String) adapter.getItem(pos);

System.out.println("selected value >> >> >> >> >> >>"+selectedFromList);

SelectedAnswer.setAnswer(selectedFromList);

}

});

进入 Logcat 给我 null 值:

I/System.out( 1238): selected value >> >> >> >> >> >>null

主类

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

listview = (ListView) findViewById(R.id.questions_list);

GoToNextQuestion();
}

private void GoToNextQuestion() {
// TODO Auto-generated method stub

currentGame = ((Quizapplication)getApplication()).getCurrentGame();
currentQ = currentGame.getNextQuestion();

setQuestions();

listview.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> myAdapter, View myView, int pos, long mylng) {

//String selectedFromList = (String) listview.getItemAtPosition(pos);
String selectedFromList = (String) adapter.getItem(pos);

System.out.println("selected value >> >> >> >> >> >>"+selectedFromList);

SelectedAnswer.setAnswer(selectedFromList);

}

});


}

private void setQuestions() {


// set the available options
List<String> answers = currentQ.getQuestionOptions();
System.out.println("value of the options >>>>>>>>>>>>>:"+answers);


//ArrayAdapter< String> myadapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_single_choice ,answers);

//ArrayAdapter< String> adapter = new ArrayAdapter<String>(this, R.layout.quiz_questions_listitem, answers);

// working for the simple adapter

adapter = new ListviewAdapter(this,answers);

listview.setAdapter(adapter);
//listview.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
}


}

编辑:

 public class ListviewAdapter extends BaseAdapter{

public List<String> Questions;

public Activity context;
public LayoutInflater inflater;


public ListviewAdapter(Activity context,List<String> answers) {
super();

this.context = context;
this.Questions = answers;

this.inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

@Override
public int getCount() {
// TODO Auto-generated method stub
return Questions.size();
}

@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}

@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}

public static class ViewHolder
{

TextView txtquestion;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub

ViewHolder holder;
if(convertView==null)
{
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.quiz_questions_listitem, null);


holder.txtquestion = (TextView) convertView.findViewById(R.id.textView_option);

convertView.setTag(holder);

/* convertView.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>"+v.toString());
notifyDataSetChanged();

SelectedAnswer.setAnswer(v.toString());
}
});*/
}
else
holder=(ViewHolder)convertView.getTag();

holder.txtquestion.setText(Questions.get(position));

return convertView;
}

}

最佳答案

您可能从自定义适配器 ListviewAdaptergetItem() 方法返回 null(您应该为适配器添加代码) .此外,无需再次在 ListView 上设置监听器。

像这样修改您的 getItem() 方法:

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

关于android - Listview setOnItemClickListener - 不适用于自定义 ListView ,但适用于简单 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12328804/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com