Gewusst wie: extrahieren von Objekten aus ListView - getItemAtPosition nicht funktionieren

Habe ich eine eigene adapter implementiert für meine ListView. Wie kann ich das extrahieren von Objekten aus einer bestimmten Liste auswählen. Hier ist, wie meine benutzerdefinierte adapter aussieht:

MyCustomAdapter.java

public class MyCustomAdapter extends ArrayAdapter<DashboardBean> {


Context context;
int layoutResourceId;
DashboardBean currentMRB;
Vector<DashboardBean> data;

public MyCustomAdapter(Context context, int layoutResourceId, Vector<DashboardBean> 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;
    MyStringReaderHolder holder;

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

        holder= new MyStringReaderHolder();

        holder.project = (TextView)row.findViewById(R.id.project);
        holder.workRequest = (TextView)row.findViewById(R.id.work_request);
        holder.startDate  = (TextView)row.findViewById(R.id.start_date);
        holder.status = (TextView) row.findViewById(R.id.status);

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

    DashboardBean mrb =data.elementAt(position);
    System.out.println("Position="+position);

     holder.project.setText(mrb.project);
    holder.workRequest.setText(mrb.workRequest);
    holder.startDate.setText(mrb.startDate);
    holder.status.setText(mrb.status);
    return row;
}





static class MyStringReaderHolder {
     TextView project, workRequest, startDate, status;

   }
}

Hier ist die DashboardBean.java

 public class DashboardBean {

    public String project;
    public String workRequest;
    public String startDate;
    public String status;   

    public DashboardBean(String project,String workRequest,String startDate,String status)
    {
        this.project = project;
        this.workRequest = workRequest;
        this.startDate = startDate;
        this.status = status;
    }
}

Hier ist java snippet von wo ich Anrufe onClickListener() :

mListView.setOnItemClickListener(new OnItemClickListener() {
      public void onItemClick(AdapterView<?> myAdapter, View myView, 
            int myItemInt, long mylng) {
        TableRow tableRow = (TableRow) (mListView.getItemAtPosition(myItemInt));

        String project = ((TextView) tableRow.findViewById(R.id.project)).getText().toString();
        String workRequest = ((TextView) tableRow.findViewById(R.id.work_request)).getText().toString();
        String startDate = ((TextView) tableRow.findViewById(R.id.start_date)).getText().toString();
        String status = ((TextView) tableRow.findViewById(R.id.status)).getText().toString();

          showWorkRequest(project, workRequest, startDate, status);

      }

  });

- Und xml-code:

<?xml version="1.0" encoding="utf-8"?>
<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tabRow1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    style="@style/BodyRow"
    android:gravity="center_horizontal" >

    <RelativeLayout 
    android:id="@+id/relativeLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"

    android:gravity="center_horizontal" >

    <TextView
        android:id="@+id/status"
        android:layout_width="wrap_content"
        style="@style/BodyText"
        android:layout_height="wrap_content"

        android:layout_alignParentRight="true"
         android:textColor="@color/textColor"
        android:text="TextView" />

    <TextView
        android:id="@+id/start_date"
        style="@style/HourText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="TextView"  android:textColor="@color/textColor" android:textSize="10sp"/>

    <TextView
        android:id="@+id/project"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/start_date"
        android:gravity="center_horizontal"
        style="@style/LeftHeaderText"
        android:text="TextView" android:layout_marginLeft="5dp"
        android:textColor="@color/textColor" android:textStyle="bold"/>

    <TextView
        android:id="@+id/work_request"
        android:layout_width="wrap_content"
        style="@style/BodyText"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/project"
        android:layout_below="@+id/project"
        android:text="TextView"
         android:textColor="@color/textColor" />

</RelativeLayout>
</TableRow>

Ich denke, ich kann nicht onClickListener verwenden, wie es ist in der Regel verwendet, weil ich bin extendind eigene adapter. In diesem Fall können Sie ein problem mit

public void onItemClick(AdapterView<?> myAdapter, View myView, 
            int myItemInt, long mylng)

Aber die log sagt: classcastexception-Fehler bei DashboardBean.

Sowieso, ich kann es nicht reparieren. Könnte mir jemand helfen?

Wo genau ist die classcastexception-Fehler? Wo genau möchten Sie den Hörer, das ganze listitem oder bestimmte Elemente im inneren?

InformationsquelleAutor Harsh | 2012-06-22

Schreibe einen Kommentar