studio - Android: ID de un botón, muchos botones, una ID de vista, usando getTag(), setTag()
sgoliver listview (0)
Puedo mostrar todo o un número selectivo de registros usando getAllRecords () y getRecord (identificación larga). Lo que quiero es mostrar un registro diferente para cada botón de vista en mi lista desplegable child.each child tiene un botón de vista adjunto. Se conoce la posición del grupo. (1er grupo). pero la posición del niño parece imposible de rastrear. Tengo solo una identificación de recursos. ¿cómo se supone que debo mostrar diferentes registros para cada niño, entonces? por favor ayuda ya que esto me confunde al núcleo. aquí está el código MyCustomAdapter.java, el código Parent.java y el código DisplayCursor.java. He intentado muchísimo pensarlo, tratando de encontrar formas de extraer la identificación del niño y extraer ese registro particular de la identificación. Pero todo fue en vano. ACTUALIZACIÓN: descubrí que necesito usar getTag () y viewTag () para que esto suceda. Pero no encuentro ningún recurso en la red que me muestre cómo hacerlo en este caso. Por favor diríjanme.
Código MyCustomAdapter. (contiene funciones de lista ampliable getchildview y 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);
}
}
Código principal (métodos padres expandibles)
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;
}
}
Código DisplayCursor: public class DisplayCursor extiende 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();
}
}
POR FAVOR, diríjanme qué cambios debo hacer para mostrar diferentes registros para cada botón de vista. Es decir, si se hace clic en el primer botón de vista de niño, primero debe mostrarse el registro, se hace clic en el botón de vista del segundo niño implica que debe mostrarse el segundo. así sucesivamente. Supongo que tengo 3 hijos, 3 botones de vista correspondientes y 3 registros.