当前位置: 首页 > 面试题库 >

自定义SimpleAdapter仅显示示例文本Android

鲜于煜祺
2023-03-14
问题内容

在创建我自己的SimpleAdapter对象之前,因为我想更改行的颜色,所以我只是使用new
SimpleAdapter(…)。现在,我正在使用自己的自定义SimpleAdapter,行颜色正在更改,但是我的文本没有得到更新。我已经调用了adapter.notifyDataSetChanged(),但它仍只显示示例文本“
TextView”。正如我所说,当我没有创建自己的适配器时,一切工作正常。我怀疑这可能与我初始化事情的顺序有关:

public class AddScreen extends Activity implements OnClickListener,
    OnItemClickListener, OnItemLongClickListener {
SimpleAdapter adapter;
List<HashMap<String, String>> painItems = new ArrayList<HashMap<String, String>>();
ListView listthings;
int[] to;
    String[] from;

public void onCreate(Bundle savedInstanceState) {
...
listthings = (ListView) findViewById(R.id.listthings);
    from = new String[] { "row_1", "row_2" };
    to = new int[] { R.id.row1, R.id.row2 };

    adapter = new Adapter(this, painItems, R.layout.mylistlayout,
            from, to);

    listthings.setAdapter(adapter);
...
}

public class Adapter extends SimpleAdapter{
    HashMap<String, String> map = new HashMap<String, String>();
    public Adapter(Context context, List<? extends Map<String, String>> data,
            int resource, String[] from, int[] to) {
        super(context, data, resource, from, to);

    }
@Override
    public View getView(int position, View convertView, ViewGroup parent){
        View row = convertView;
        if (row == null) {
            LayoutInflater mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            row = mInflater.inflate(R.layout.mylistlayout, parent, false);
            }
        row.setBackgroundColor(0xFF0000FF);
       TextView rw1 = (TextView)findViewById(R.id.row1);
      // TextView rw2 = (TextView)findViewById(R.id.row2);
       rw1.setText(map.get(position));
       return row;
    }

}
// to add the item, put it in the map, and add the map into the list
private void addItem() {
    HashMap<String, String> map = new HashMap<String, String>();
    map.put("row_1", row1);
    map.put("row_2", row2);
    map.put("row_3", painLevelString);
    map.put("row_4", painLocation);
    map.put("row_5", timeOfPainString);
    map.put("row_6",textTreatmentString);
    painItems.add(map);

        adapter.notifyDataSetChanged();




}

编辑:添加代码

这就是我从位于addItem代码之前的intent(onActivityResult())获取数据的方式:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == 1) {
        row1 = data.getStringExtra("com.painLogger.row1");
        row2 = data.getStringExtra("com.painLogger.row2");

        painLevelString = data.getStringExtra("com.painLogger.painLevel");
        painLocation = data.getStringExtra("painLocation");
        timeOfPainString = data.getStringExtra("com.painLogger.painTime");
        textTreatmentString = data
                .getStringExtra("com.painLogger.treatment");
        addItem();
    }
}

_*_此外,以防万一,这与放置的顺序有关:onCreate()- >自定义适配器类-> onActivityResult()->
addItem()*

这是其外观的屏幕截图。每个项目中的两个TextView字段应填充信息(直到我这样做为止)。


问题答案:

如果以前仅使用可以工作,new SimpleAdapter(...)则在getView(...)实现中将第一行更改为:

View row = super.getView(position, convertView, parent);

看看这是否是您所期望的。也拿出LayoutInflater东西。



 类似资料:
  • 问题内容: 让我说 。这将返回结果 如何使用案例,将输出更改为0->完全不同意20->同意40->非常同意 问题答案: 我认为这就是您想要的:

  • 我试图在单个产品页面上显示自定义文本“price only visible for logged in users”,但仅当,具有当前中的值时。 当加载单个产品页面时,我找不到实现当前产品post_id的正确SQL查询。 下面是我的代码:

  • 我想只显示父类别名称而不是孩子,也不使用在任何产品或帖子,我只需要列出父自定义类别。 我尝试了获取术语、wp\u列表\u类别函数,但它也显示子项 这是我的代码。 它还显示了child,但我只需要父类别名称。 我使用Product_cat是一个WooCommerce类别,当我使用它与get_terms它是给空数组。 我也用这种方式,但product_cat不适用于get_术语 请参阅附件中的图片,我

  • 问题内容: 当前,我正在使用Lucene 3.0.2版创建类似于字典的搜索应用程序。我要显示的对象之一是一种“示例”,其中Lucene将在书中寻找一个单词,然后显示使用该单词的句子。 我一直在阅读《 Lucene in Action》一书,其中提到了类似的内容,但通过浏览我找不到其他提及。这是Lucene可以做的吗?如果是,您该怎么办? 问题答案: 我相信您正在寻找的是荧光笔。 一种可能是使用lu

  • 本文向大家介绍C#自定义DataGridViewColumn显示TreeView,包括了C#自定义DataGridViewColumn显示TreeView的使用技巧和注意事项,需要的朋友参考一下 我们可以自定义DataGridView的DataGridViewColumn来实现自定义的列,下面介绍一下如何通过扩展DataGridViewColumn来实现一个TreeViewColumn 1.Tre

  • 本文向大家介绍Android 设置自定义通知-显示全文,包括了Android 设置自定义通知-显示全文的使用技巧和注意事项,需要的朋友参考一下 示例 如果要在上下文中显示长文本,则需要设置自定义内容。 例如,您有: 但您希望您的文字能完整显示: 您需要做的就是向您的内容添加样式,如下所示: