我创建了一个自定义列表视图,并创建了自己的适配器类我已经充入低于code中的观点:
@覆盖公共查看getView(最终诠释的立场,观点convertView,父母的ViewGroup){ LayoutInflater layoutInflater =(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 查看streamrowView = layoutInflater.inflate(R.layout.streamrow,父母,假); initUI(streamrowView); tvUserMsg.setText(值[位置] .Message); tvPostDate.setText(值[位置] .postDate); 返回streamrowView;} 私人无效initUI(查看streamrowView){ tvUserMsg =(TextView中)streamrowView.findViewById(R.id.tvUserMsg); tvPostDate =(TextView中)streamrowView.findViewById(R.id.tvPostDate);}
列表视图可以正常使用,但设置onItemClick侦听器事件无法正常工作
listView.setOnItemClickListener(新OnItemClickListener(){ 公共无效onItemClick(适配器视图<>数据视图V,诠释POS机, 长ARG3){ Toast.makeText(getApplicationContext列表点击,1).show(); 的System.out.println(*****列表点击!!!); } });
有没有其他的办法了onItemClick监听器自定义行。
解决方案 公共查看getView(最终诠释的立场,观点convertView, 父母的ViewGroup){ 最终的VI; // = convertView; ViewHolder持有人; //如果(convertView == NULL){ VI = inflater.inflate(R.layout.row_mbc_language,NULL); 持有人=新ViewHolder(); holder.txtViewLangItem =(TextView中)六 .findViewById(R.id.txtViewLangItem); holder.imgViewSelectedLang =(ImageView的)六 .findViewById(R.id.imgViewSelectedLang); vi.setTag(保持器); vi.setOnClickListener(新OnClickListener(){ @覆盖 公共无效的onClick(查看为arg0){ // TODO自动生成方法存根 BibleActivity.selectedLang code = MBCLanguageListAdapter.this.resultsLang [位置]。外语code; MainActivity.Save preferences(郎code, BibleActivity.selectedLang code, MBCLanguageListAdapter.this.activity); notifyDataSetChanged(); } }); holder.txtViewLangItem.setText(this.resultsLang [位置]。外语); 如果(this.resultsLang [位置]。外语code .equals(BibleActivity.selectedLang code)){ holder.imgViewSelectedLang.setVisibility(View.VISIBLE); } 返回VI; }
I have created a custom list view and created my own adapter class I have inflated the view with below code:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View streamrowView = layoutInflater.inflate(R.layout.streamrow, parent,false);
initUI(streamrowView);
tvUserMsg.setText(values[position].Message);
tvPostDate.setText(values[position].postDate);
return streamrowView;
}
private void initUI(View streamrowView) {
tvUserMsg = (TextView) streamrowView.findViewById(R.id.tvUserMsg);
tvPostDate = (TextView) streamrowView.findViewById(R.id.tvPostDate);
}
List view is working perfectly, but the set onItemClick listener event is not working
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> data, View v, int pos,
long arg3) {
Toast.makeText(getApplicationContext, "list clicked" ,1).show();
System.out.println("*****List clicked!!!");
}
});
is there any other approach for onItemClick listener for custom rows.
解决方案public View getView(final int position, View convertView,
ViewGroup parent) {
final View vi ;//= convertView;
ViewHolder holder;
// if (convertView == null) {
vi = inflater.inflate(R.layout.row_mbc_language, null);
holder = new ViewHolder();
holder.txtViewLangItem = (TextView) vi
.findViewById(R.id.txtViewLangItem);
holder.imgViewSelectedLang = (ImageView) vi
.findViewById(R.id.imgViewSelectedLang);
vi.setTag(holder);
vi.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
BibleActivity.selectedLangCode = MBCLanguageListAdapter.this.resultsLang[position].languageCode;
MainActivity.SavePreferences("langCode",
BibleActivity.selectedLangCode,
MBCLanguageListAdapter.this.activity);
notifyDataSetChanged();
}
});
holder.txtViewLangItem.setText(this.resultsLang[position].language);
if (this.resultsLang[position].languageCode
.equals(BibleActivity.selectedLangCode)) {
holder.imgViewSelectedLang.setVisibility(View.VISIBLE);
}
return vi;
}