我无法在arrayAdapter中获取文本以显示文本。该列表确实显示在模拟器中的颜色等,但文本不会显示...我运行时没有任何错误和我在ArrayAdapter中的Log.i()会打印预期的文字。
public class ListingArrayAdapter extends ArrayAdapter<ParseObject> {
final String TAG = "ListingArrayAdapter";
public ListingArrayAdapter(Context context, ArrayList<ParseObject> listings){
super(context,0,listings);
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
if(convertView == null) {
convertView = LayoutInflater.from(getContext())
.inflate(R.layout.listing_item, parent, false);
final ViewHolder holder = new ViewHolder();
holder.body = (TextView) convertView.findViewById(R.id.tvBody);
holder.title = (TextView) convertView.findViewById(R.id.tvTitle);
convertView.setTag(holder);
}
final ParseObject listing = getItem(position);
final ViewHolder holder = (ViewHolder)convertView.getTag();
holder.body.setText(listing.getString("desc"));
holder.title.setText(listing.getString("title"));
Log.i(TAG, "info set" + listing.getString("title"));
//Logs the title correctly so, the getString() does return text
return convertView;
}
final class ViewHolder {
public TextView title;
public TextView body;
}
}
布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1">
<TextView
android:id="@+id/tvTitle"
android:padding="20dp"
android:lines="1"
android:layout_width="match_parent"
android:background="@color/colorAccent"
android:layout_height="wrap_content">
</TextView>
<TextView
android:id="@+id/tvBody"
android:padding="20dp"
android:lines="2"
android:layout_width="match_parent"
android:layout_height="64dp"
android:background="?android:attr/detailsElementBackground">
</TextView>
</LinearLayout>
答案 0 :(得分:1)
如果记录了数据,则会出现一些布局问题。
建议:
确保在添加到适配器后调用notifyDataSetChanged()
。
您有两个视图,但android:weightSum="1"
,请尝试删除它。
也许文本颜色设置为与背景相同。删除颜色。