在Imageview上的Android自定义listview单击获取textview数据并打开活动
作者:互联网
// Adding menuItems to ListView
mylist=(ListView)findViewById(R.id.lstshowcatalogue);
ListAdapter adapter=new LazyAdapter(this, menuItems,getApplicationContext());
mylist.setAdapter(adapter);
mylist.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> Parent, View view, int position,
long id) {
// TODO Auto-generated method stub
if(position>=0)
{
TextView c = (TextView) view.findViewById(R.id.txtlargeimage);
largeimage = c.getText().toString();
ImageView thumb_image=(ImageView)view.findViewById(R.id.ivcatalouge); // thumb image
thumb_image.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(largeimage.length()>0)
{
Intent i=new Intent();
i.setClass(getApplicationContext(), FrmShowSingleImage.class);
i.putExtra("largeimage", largeimage);
startActivity(i);
//Toast.makeText(getApplicationContext(), largeimage, Toast.LENGTH_SHORT).show();
largeimage="";
}
}});
//Toast.makeText(getApplicationContext(), largeimage, Toast.LENGTH_SHORT).show();
}
}});
我想在缩略图onclick上打开一个新活动.当首次选择项目时,它工作正常.如果我单击缩略图而不选择项目,则它会变旧
Here is my updated listview adapter
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.list_item, null);
TextView name = (TextView)vi.findViewById(R.id.name); // name
TextView desc = (TextView)vi.findViewById(R.id.desciption); // collection
TextView cost = (TextView)vi.findViewById(R.id.cost); // cost
TextView category = (TextView)vi.findViewById(R.id.txtcategory); // cost
TextView spec = (TextView)vi.findViewById(R.id.txtspec); // cost
TextView largeimg = (TextView)vi.findViewById(R.id.txtlargeimage); // cost
ImageView thumb_image=(ImageView)vi.findViewById(R.id.ivcatalouge); // thumb image
thumb_image.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
TextView c = (TextView) v.findViewById(R.id.txtlargeimage);
Intent i=new Intent();
i.setClass(mCtx, FrmShowSingleImage.class);
i.putExtra("largeimage", c.getText());
mCtx.startActivity(i);
}});
HashMap<String, String> song = new HashMap<String, String>();
song = data.get(position);
// Setting all values in listview
name.setText(song.get(FrmShowCatlogue.KEY_MODEL));
desc.setText(song.get(FrmShowCatlogue.KEY_COLLECTION));
cost.setText(song.get( FrmShowCatlogue.KEY_MRP));
category.setText(song.get( FrmShowCatlogue.KEY_CATEGORY));
spec.setText(song.get( FrmShowCatlogue.KEY_SPEC));
largeimg.setText(song.get( FrmShowCatlogue.KEY_LARGE));
largeimg.setVisibility(View.GONE);
try
{
String filename=song.get(FrmShowCatlogue.KEY_IMAGES.toString());
filename="thumbs/" + filename;
// get input stream
InputStream ims = mCtx.getAssets().open(filename);
// load image as Drawable
Drawable d = Drawable.createFromStream(ims, null);
// set image to ImageView
thumb_image.setImageDrawable(d);
}
catch(IOException ex)
{
//thumb_image.setVisibility(View.GONE);
}
return vi;
}
现在,我在单击拇指时得到了空指针异常.
我已经从listview的SetOnItemClickListener中删除了thumb_image onclick
解决方法:
如果您的列表项单击没有被识别,那是因为您的自定义列表项中包含许多可单击项(图像按钮,按钮…).将android:focusable = false用于这些项目,您的列表视图点击将没问题.
然后就像JaredLua所说的那样,您应该在适配器中添加onClickLisener(),因为它仅用于thumb_image而不是整个listitem
标签:android-listview,android-imageview,android,textview 来源: https://codeday.me/bug/20191030/1969343.html