cnfw
cnfw

Reputation: 800

Setting onClicks for a custom listview

I'm trying to make an onlcicklistener for items in a ListView, but I don't know where to start. I've tried a few things but none have worked. Here is the code for the class:

public class Primary_Weapons extends Activity {
    private ListView listView1;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.we_primary_list);

        Weapon weather_data[] = new Weapon[]
        {
            new Weapon(R.drawable.we_braton, "Braton"),
            new Weapon(R.drawable.we_braton_prime, "Braton Prime"),
            new Weapon(R.drawable.we_braton_vandal, "Braton Vandal"),
            new Weapon(R.drawable.we_braton, "MK1-Braton"),
            new Weapon(R.drawable.we_boltor, "Boltor")
        };

        WeaponAdapter adapter = new WeaponAdapter(this, 
                R.layout.listview_item_row, weather_data);


        listView1 = (ListView)findViewById(R.id.listView1);

        View header = (View)getLayoutInflater().inflate(R.layout.listview_header_row, null);
        listView1.addHeaderView(header);

        listView1.setAdapter(adapter);
    }
}

When an item is clicked, the text on it will define a string, then that string will be used in another method. For example, if "Braton Prime" was selected, it would set a string to "Braton Prime" then will be used to do other stuff

EDIT: Adapter Code:

public class WeaponAdapter extends ArrayAdapter<Weapon>{

    Context context; 
    int layoutResourceId;    
    Weapon data[] = null;

    public WeaponAdapter(Context context, int layoutResourceId, Weapon[] data) {
        super(context, layoutResourceId, data);
        this.layoutResourceId = layoutResourceId;
        this.context = context;
        this.data = data;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = convertView;
        WeatherHolder holder = null;

        if(row == null)
        {
            LayoutInflater inflater = ((Activity)context).getLayoutInflater();
            row = inflater.inflate(layoutResourceId, parent, false);

            holder = new WeatherHolder();
            holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
            holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);

            row.setTag(holder);
        }
        else
        {
            holder = (WeatherHolder)row.getTag();
        }

        Weapon weather = data[position];
        holder.txtTitle.setText(weather.title);
        holder.imgIcon.setImageResource(weather.icon);

        return row;
    }

    static class WeatherHolder
    {
        ImageView imgIcon;
        TextView txtTitle;
    }
}

Edit 3: Basically I'm wanting each item on the listView to do something different

Upvotes: 1

Views: 89

Answers (2)

Benoit
Benoit

Reputation: 4599

Simply set a listener on your listview.

listView1.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {

        //Something like...
        Weapon weapon = adapter.getItem(position);
        textField.setText( weapon.getName() );
        //...
    }
});

Upvotes: 3

Raghunandan
Raghunandan

Reputation: 133560

Use setOnItemClickListener

   listView1.setOnItemClickListener(new OnItemClickListener()
    {

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {

    }               
    });

Upvotes: 1

Related Questions