Domanda

I created custom adapter for listview which contain text and images, on click of particular list item I have to open another activity, but I am not able to fire listview click event, below is my code.

Thanks.

Adapter

public class ImageAndTextAdapter extends ArrayAdapter<String> {

private LayoutInflater mInflater;
private Context myCtx;
private String[] mStrings;
private TypedArray mIcons;

private int mViewResourceId;

public ImageAndTextAdapter(Context ctx, int viewResourceId,
        String[] strings, TypedArray icons) {
    super(ctx, viewResourceId, strings);
    myCtx = ctx;
    mInflater = (LayoutInflater)ctx.getSystemService(
            Context.LAYOUT_INFLATER_SERVICE);

    mStrings = strings;
    mIcons = icons;

    mViewResourceId = viewResourceId;
}

@Override
public int getCount() {
    return mStrings.length;
}

@Override
public String getItem(int position) {
    return mStrings[position];
}

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    convertView = mInflater.inflate(mViewResourceId, null);

    ImageView iv = (ImageView)convertView.findViewById(R.id.option_icon);
    iv.setImageDrawable(mIcons.getDrawable(position));


    TextView tv = (TextView)convertView.findViewById(R.id.option_text);
    tv.setText(mStrings[position]);

    return convertView;
}
}

Main acitivity

public class OurWishingWellActivity extends ListActivity implements OnClickListener{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
   // setContentView(R.layout.list_view_image);

    Context ctx = getApplicationContext();
    Resources res = ctx.getResources();

    String[] options = res.getStringArray(R.array.reg_item_names);
    TypedArray icons = res.obtainTypedArray(R.array.reg_icons);

    setListAdapter(new ImageAndTextAdapter(ctx, R.layout.list_item,
            options, icons));

}

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

}


}
È stato utile?

Soluzione

Respected Aafag#

You have write onclick of listview like below.

  @Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    // TODO Auto-generated method stub
    super.onListItemClick(l, v, position, id);
    Toast.makeText(AdvancedListViewActivity.this, "working", Toast.LENGTH_SHORT).show();
    System.out.println("working!!!!!!!!!");
}

Altri suggerimenti

Add listener

@Override

public View getView(int position, View convertView, ViewGroup parent) { convertView = mInflater.inflate(mViewResourceId, null);

ImageView iv = (ImageView)convertView.findViewById(R.id.option_icon);
iv.setImageDrawable(mIcons.getDrawable(position));


TextView tv = (TextView)convertView.findViewById(R.id.option_text);
tv.setText(mStrings[position]);

convertView .setOnClickListener(new OnClickListener() {

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

            startActivity();


        }
    });

return convertView;

}

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top