Android ArrayAdapter with Object和从该对象获取一些数据

时间:2013-01-14 19:28:56

标签: android object android-arrayadapter

我试图使用来自Array的数据制作ListView,但是我需要获得点击行的ID(未显示在该行中,但是用户创建该产品)

我将这个类用于对象:

package com.example.raidplanner;
public class RaidWpis {
private int id;
private int id_gildia;
private String nazwa;
private int schemat;
private int data_zapis;
private int data_start;
private int opis;
private int id_officer;
private int nick_officer;
private int typ;

public RaidWpis(int id,String nazwa) {
    setNazwa(nazwa);
    setId(id);
}

public int getId()                  { return id; }

public void setId(int id)           { this.id = id; }

public String getNazwa()            { return nazwa; }

public void setNazwa(String nazwa)  { this.nazwa = nazwa; }

public String toString() {
        return this.nazwa;
    }
    public String toString2() {
        return this.id+" - "+nazwa;
    }

}

这段代码在Activity:

RaidWpis[] items = {
            new RaidWpis(1, "aaaa"),
            new RaidWpis(3, "bbbb"),
            new RaidWpis(6, "cccc"),
            new RaidWpis(11, "dddd"),
            new RaidWpis(17, "eeee"),
        };        
    mainListView = (ListView) findViewById( R.id.mainListView );  

    ArrayAdapter<RaidWpis> raidList = new ArrayAdapter<RaidWpis>(this, R.layout.simplerow, items);  

    // Create ArrayAdapter using the raid list.  
    mainListView.setAdapter(raidList);

    mainListView.setOnItemClickListener(new OnItemClickListener() {
          @Override
            public void onItemClick(AdapterView<?> parent, View view, int position,
                    long id) 
          {
                String item = ((TextView)view).getText().toString();
                Toast.makeText(getBaseContext(), item, Toast.LENGTH_LONG).show();   
          }
        });

2 个答案:

答案 0 :(得分:1)

  

我需要获得点击行的ID(未显示在该行中,但是用户创建该产品)

onItemClick()方法中尝试此操作:

RaidWpis obj = parent.getAdapter().getItem(position); // or just raidList.get(position) if raidList is a field variable
Toast.makeText(getBaseContext(), obj.getID() + "", Toast.LENGTH_LONG).show();

答案 1 :(得分:1)

从该位置,您可以使用raidList.get(position)获取RaidWpis对象。拥有此RaidWpis对象后,可以调用getId()来获取id