为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

牛魔王的故事 2021-11-03 16:26:03
基本上,我有一个 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 创建得很好
查看完整描述

2 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

尝试使用

context.getTheme().obtainStyledAttributes(attribute, R.styleable.ChampText);

唯一的区别是您将从上下文中使用 getTheme 方法


查看完整回答
反对 回复 2021-11-03
?
隔江千里

TA贡献1906条经验 获得超10个赞

我解决了我的问题。


我有一个班级会产生我的观点(尤其是我的孩子观点)。


我得到了这个方法:


@Override

public View getChildView(int listPosition, final int expandedListPosition,

                         boolean isLastChild, View convertView, ViewGroup parent) {

    final ChampText expandedListText = (ChampText) getChild(listPosition, expandedListPosition);

    if (convertView == null) {

        LayoutInflater layoutInflater = (LayoutInflater) this.context

                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        convertView = layoutInflater.inflate(R.layout.list_item, null);

    }

    ChampText expandedListTextView = (ChampText) convertView

            .findViewById(R.id.expandedListItem);

    expandedListTextView.setText(expandedListText.getText());

    expandedListTextView.setIdveh(expandedListText.getIdveh());

    return convertView;

}

我expandedListTextView.setIdveh(expandedListText.getIdveh());在最后添加了一行 : 。


显然,它有效..


好吧,谢谢大家花时间!


查看完整回答
反对 回复 2021-11-03
  • 2 回答
  • 0 关注
  • 171 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信