所以我制作了一个带有HashMap(String,Card)的ArrayAdapter,其中Card只是两个字符串的自定义类,基本上可以在以后的ListView上显示信息 所以我重写了getView方法,如:
Alter table mytable add mycolumn char(1) not null default('N');
我得错误卡无法转换为java.lang.CharSequence
是否有更好的方式来显示信息而不仅仅是将其作为文本视图投射?
谢谢!
以下是my_adapter_item
的XML代码public View getView(int position, View changeView, ViewGroup parent)
{
final View result;
if(changeView == null)
{
result = LayoutInflater.from(parent.getContext()).inflate(R.layout.my_adapter_item, parent,false);
}
else
result = changeView;
Map.Entry<String, String> item = getItem(position);
//replace findViewById by ViewHolder
((TextView) result.findViewById(android.R.id.text1)).setText(item.getKey());
Error here--> ((TextView) result.findViewById(android.R.id.text2)).setText(item.getValue());
return result;
}
这也是日志猫
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id = "@android:id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id = "@android:id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
答案 0 :(得分:1)
您的<String, Card>
类型为getValue()
,因此您不能简单地将CharSequence
的返回值转换为getValue()
,但您必须指定返回值Card
对public String mValue
类型的对象,然后访问属性。假设该卡包含mValue
,您可以通过cardInstance.mValue
访问public View getView(int position, View changeView, ViewGroup parent)
{
final View result;
if(changeView == null)
{
result = LayoutInflater.from(parent.getContext()).inflate(R.layout.my_adapter_item, parent,false);
}
else
result = changeView;
Map.Entry<String, Card> item = getItem(position);
Card card = item.getValue();
((TextView) result.findViewById(android.R.id.text1)).setText(item.getKey());
((TextView) result.findViewById(android.R.id.text2)).setText(card.mValue);
return result;
}
。 E.g。
{{1}}