Android: eine Schaltflächen-ID, viele Schaltflächen, eine Ansichts-ID mit getTag (), setTag ()

Ich kann mit getAllRecords () und getRecord (lange ID) alle oder eine ausgewählte Anzahl von Datensätzen anzeigen. Die Sache ist, dass ich für jede Ansichtsschaltfläche auf meinem erweiterbaren Listenkind einen anderen Datensatz anzeigen möchte. An jedes Kind ist eine Ansichtsschaltfläche angehängt. Die Gruppenposition ist bekannt (1. Gruppe). aber die Position des Kindes scheint unmöglich aufzuspüren. Ich habe nur eine Ressourcen-ID. Wie soll ich dann für jedes Kind unterschiedliche Datensätze anzeigen? Bitte helfen Sie, das verwirrt mich bis ins Mark. Hier ist der MyCustomAdapter.java-Code, der Parent.java-Code und der DisplayCursor.java-Code. Ich habe verdammt viel versucht, um es zu überlegen, und habe versucht, Wege zu finden, um die Kind-ID und diesen bestimmten Datensatz aus der ID zu extrahieren. Aber alles umsonst. UPDATE: Ich habe herausgefunden, dass ich getTag () und viewTag () verwenden muss, um dies zu ermöglichen. Aber ich finde keine Ressource im Netz, die mir richtig zeigt, wie es in diesem Fall geht. Bitte leiten Sie mich.

MyCustomAdapter-Code. (enthält erweiterbare Listenfunktionen getchildview und getgroupview)

public class MyCustomAdapter extends BaseExpandableListAdapter {


private LayoutInflater inflater;
private ArrayList<parent> mParent;
public MyCustomAdapter(){}
public MyCustomAdapter(Context context, ArrayList<parent> parent){
    mParent = parent;
    inflater = LayoutInflater.from(context);
}


@Override
//counts the number of group/parent items so the list knows how many times calls getGroupView() method
public int getGroupCount() {
    return mParent.size();
}

@Override
//counts the number of children items so the list knows how many times calls getChildView() method
public int getChildrenCount(int i) {
    return mParent.get(i).getArrayChildren().size();
}

@Override
//gets the title of each parent/group
public Object getGroup(int i) {
    return mParent.get(i).getTitle();
}

@Override
//gets the name of each item
public Object getChild(int i, int i1) {
    return mParent.get(i).getArrayChildren().get(i1);
}

@Override
public long getGroupId(int i) {
    return i;
}

@Override
public long getChildId(int i, int i1) {
    return i1;
}

@Override
public boolean hasStableIds() {
    return true;
}

@Override
//in this method you must set the text to see the parent/group on the list
public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) {

    if (view == null) {
        view = inflater.inflate(R.layout.investment_summary_parent, viewGroup,false);
    }

    TextView textView = (TextView) view.findViewById(R.id.list_item_text_view);
    //"i" is the position of the parent/group in the list
    textView.setText(getGroup(i).toString());

    //return the entire view
    return view;
}

@Override
//in this method you must set the text to see the children on the list
public View getChildView(int i, int i1, boolean b, View view, ViewGroup viewGroup) {
    if (view == null) {
        view = inflater.inflate(R.layout.investment_summary_child, viewGroup,false);

    }
   // viewbutton.getTag();
    TextView textView = (TextView) view.findViewById(R.id.list_item_text_child);
    //"i" is the position of the parent/group in the list and 
    //"i1" is the position of the child
    textView.setText(mParent.get(i).getArrayChildren().get(i1));

    //return the entire view
    return view;
}

@Override
public boolean isChildSelectable(int i, int i1) {
    return true;
}

@Override
public void registerDataSetObserver(DataSetObserver observer) {
    /* used to make the notifyDataSetChanged() method work */
    super.registerDataSetObserver(observer);
}
}

Übergeordneter Code (erweiterbare übergeordnete Methoden)

public class parent {
private String mTitle;
private ArrayList<String> mArrayChildren;

public String getTitle() {
    return mTitle;
}

public void setTitle(String mTitle) {
    this.mTitle = mTitle;
}

public ArrayList<String> getArrayChildren() {
    return mArrayChildren;
}

public void setArrayChildren(ArrayList<String> mArrayChildren) {
    this.mArrayChildren = mArrayChildren;
}
}

DisplayCursor-Code: öffentliche Klasse DisplayCursor erweitert ListActivity {DBAdapter db = new DBAdapter (this);

@Override
public void onCreate(Bundle savedInstanceState) 
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_cursor);
filldata();

}
@SuppressWarnings("deprecation")
public void filldata(){
db.open();

Cursor cursor = db.getRecord(2);//displays 2nd record
startManagingCursor(cursor);

String[] columns = new String[] {DBAdapter.invest_type,DBAdapter.curr_per_share_price, DBAdapter.share_name,
        DBAdapter.no_of_shares,DBAdapter.share_identity,DBAdapter.purchase_price,
        DBAdapter.purchase_from,DBAdapter.purchase_date,DBAdapter.purchase_contact};

int[] to = new int[] { R.id.investmenttype,R.id.currpershareprice,R.id.sharename,R.id.shareno,R.id.shareid,    R.id.purprice,
        R.id.purfrom,R.id.purdate,R.id.purcon};
 SimpleCursorAdapter mAdapter = new SimpleCursorAdapter( this, R.layout.row, cursor, columns, to);
 this.setListAdapter(mAdapter);
 db.close();

 }   
 }

BITTE weisen Sie mich an, welche Änderungen ich vornehmen muss, um unterschiedliche Datensätze für die einzelnen Ansichtsschaltflächen anzuzeigen. Wenn auf die Schaltfläche für die erste untergeordnete Ansicht geklickt wird, muss der erste Datensatz angezeigt werden, und auf die Schaltfläche für die zweite untergeordnete Ansicht bedeutet, dass der zweite Datensatz angezeigt werden muss. Sagen wir mal, ich habe 3 Kinder, 3 entsprechende Ansichtsschaltflächen und 3 Datensätze.

Antworten auf die Frage(0)

Ihre Antwort auf die Frage