从 CustomView 中检索 id 实例化在另一个类中

基本上,我有一个 ExpandableListView 中每个标题的 Textview 列表。


我想将数据库中的 id 放在 TextView 的属性中,以便稍后检索。我创建了一个 CustomView“ChampText”,其 CustomAttribute idveh 是 id。


public class ChampText extends android.support.v7.widget.AppCompatTextView{


public String idveh;


public ChampText(Context context){

    super(context);

}


public ChampText(Context context, AttributeSet attribute) {

    super(context, attribute);

    TypedArray ta = context.obtainStyledAttributes(attribute, R.styleable.ChampText);

    idveh = ta.getString(R.styleable.ChampText_idveh);

    ta.recycle();

}


public String getIdveh() {

    return idveh;

}


public void setIdveh(String idveh) {

    this.idveh = idveh;

}

}

和 attrs.xml :


<resources>

  <declare-styleable name="ChampText">

    <attr name="idveh" format="string"/>

  </declare-styleable>

</resources>

我在 getData() 方法中创建了我的“ChampText”列表:


public HashMap<String, List<ChampText>> getData(List<VehiculeModel> list) {


    List<String> expVehicule = new ArrayList<String>();


    HashMap<String, List<ChampText>> expandableListDetail = new HashMap<String, List<ChampText>>();



        for (VehiculeModel vehicule : list) {

            List<ChampText> expTextViewVehicule = new ArrayList<ChampText>();

            ChampText mesPleins = new ChampText(context);

            ChampText supprimer = new ChampText(context);

            String nomVehicule = "";


            String vehid = String.valueOf(vehicule.getId());

            nomVehicule = vehicule.getVehiculeNom() + "\n" + vehicule.getVehiculeType();


            mesPleins.setText("Mes Pleins");

            mesPleins.setId(vehicule.getId());

            mesPleins.setIdveh(vehid);


}

此时,我的 id 是好的 id(第一个车辆为 1,第二个为 2,等等),我尝试将它分配给我为每辆车创建的每个项目的属性 idveh。


在我的 MainPage 上,我的 Views ChampText 创建得很好


牛魔王的故事
浏览 172回答 2
2回答

侃侃无极

尝试使用context.getTheme().obtainStyledAttributes(attribute,&nbsp;R.styleable.ChampText);唯一的区别是您将从上下文中使用 getTheme 方法

隔江千里

我解决了我的问题。我有一个班级会产生我的观点(尤其是我的孩子观点)。我得到了这个方法:@Overridepublic View getChildView(int listPosition, final int expandedListPosition,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;boolean isLastChild, View convertView, ViewGroup parent) {&nbsp; &nbsp; final ChampText expandedListText = (ChampText) getChild(listPosition, expandedListPosition);&nbsp; &nbsp; if (convertView == null) {&nbsp; &nbsp; &nbsp; &nbsp; LayoutInflater layoutInflater = (LayoutInflater) this.context&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .getSystemService(Context.LAYOUT_INFLATER_SERVICE);&nbsp; &nbsp; &nbsp; &nbsp; convertView = layoutInflater.inflate(R.layout.list_item, null);&nbsp; &nbsp; }&nbsp; &nbsp; ChampText expandedListTextView = (ChampText) convertView&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .findViewById(R.id.expandedListItem);&nbsp; &nbsp; expandedListTextView.setText(expandedListText.getText());&nbsp; &nbsp; expandedListTextView.setIdveh(expandedListText.getIdveh());&nbsp; &nbsp; return convertView;}我expandedListTextView.setIdveh(expandedListText.getIdveh());在最后添加了一行 : 。显然,它有效..好吧,谢谢大家花时间!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java