Android:ListView在一行中包含所有值
Posted
技术标签:
【中文标题】Android:ListView在一行中包含所有值【英文标题】:Android: ListView Contains All Values in One Line 【发布时间】:2020-08-05 22:23:18 【问题描述】:我在使用 ListView 显示值时遇到问题。 我为 listview 创建了适配器扩展了 Base Adapter 和 Setter & Getter,但是它存储 一行中的所有值。
这是显示画面
我想这样显示
这是我的适配器类
public class DataShow_List_Adapter extends BaseAdapter
private LayoutInflater layoutInflater;
private ArrayList<TimeTable_ListItems> timeTable_listItems;
public DataShow_List_Adapter(Context context)
this.layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
public void SetTimeTable_listItems_adapter(ArrayList<TimeTable_ListItems> timeTable_listItems)
this.timeTable_listItems = timeTable_listItems;
@Override
public int getCount()
return timeTable_listItems.size();
@Override
public Object getItem(int position)
return timeTable_listItems.get(position);
@Override
public long getItemId(int position)
return timeTable_listItems.get(position).getId();
@SuppressLint("ViewHolder")
@Override
public View getView(int position, View convertView, ViewGroup parent)
convertView = layoutInflater.inflate(R.layout.timetable_datashow_listview_row,parent,false);
((TextView)convertView.findViewById(R.id.Title_List)).setText(timeTable_listItems.get(position).getTitle());
((TextView)convertView.findViewById(R.id.SubTitle_List)).setText(timeTable_listItems.get(position).getSubTitle());
((TextView)convertView.findViewById(R.id.Start_Time_List)).setText(timeTable_listItems.get(position).getStart_Time());
((TextView)convertView.findViewById(R.id.End_Time_List)).setText(timeTable_listItems.get(position).getEnd_time());
return convertView;
这是 Setter & Getter
public class TimeTable_ListItems
private long id;
private String title;
private String subTitle;
private String start_Time;
private String end_time;
public long getId()
return id;
public void setId(long id)
this.id = id;
public String getTitle()
return title;
public void setTitle(String title)
this.title = title;
public String getSubTitle()
return subTitle;
public void setSubTitle(String subTitle)
this.subTitle = subTitle;
public String getStart_Time()
return start_Time;
public void setStart_Time(String start_Time)
this.start_Time = start_Time;
public String getEnd_time()
return end_time;
public void setEnd_time(String end_time)
this.end_time = end_time;
这是从数据库返回字符串的方法
public String getTitle_database_mon()
sqLiteDatabase = this.getReadableDatabase();
String[] columns = new String[]COLUMN_TITLE, COLUMN_MON,;
@SuppressLint("Recycle")
Cursor cursor =
sqLiteDatabase.query(TABLE_TIMETABLE,columns,COLUMN_MON + "=" + 1 ,null,null,null,null);
int iTitle = cursor.getColumnIndex(COLUMN_TITLE);
StringBuilder result = new StringBuilder();
for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext())
result.append(cursor.getString(iTitle)).
append("\n\n");
return result.toString();
这是我的片段
public class Monday_DataShow_Fragment extends Fragment
private View root;
private ListView listView_mon;
private ArrayList<TimeTable_ListItems> timeTable_listItems_array;
private TimeTable_ListItems timeTable_listItems;
private DatabaseTimetable databaseTimetable;
private DataShow_List_Adapter dataShow_list_adapter;
public Monday_DataShow_Fragment()
// Required empty public constructor
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
root = inflater.inflate(R.layout.fragment_monday__data_show_, container, false);
findViews();
databaseTimetable = new DatabaseTimetable(getActivity());
timeTable_listItems = new TimeTable_ListItems();
dataShow_list_adapter = new DataShow_List_Adapter(requireActivity());
setListItems();
timeTable_listItems_array.add(timeTable_listItems);
dataShow_list_adapter.SetTimeTable_listItems_adapter(timeTable_listItems_array);
listView_mon.setAdapter(dataShow_list_adapter);
// Inflate the layout for this fragment
return root;
private void setListItems()
timeTable_listItems_array = new ArrayList<>();
timeTable_listItems.setTitle(databaseTimetable.getTitle_database_mon());
dataShow_list_adapter.notifyDataSetChanged();
private void findViews()
listView_mon = root.findViewById(R.id.listview_monday);
如果您有任何建议,我想听听。
【问题讨论】:
确保在项目布局中使用 wrap_content 作为高度 【参考方案1】:问题是您只有一个标题作为标题字符串。 getTitle_database_mon
返回result.toString()
。如果您想要多行,您需要在列表中有多个对象,并且每个对象都有唯一的标题。所以不是一个TimeTable_ListItems
。您需要改用ArrayList<TimeTable_ListItems>
并让每个条目都包含一个标题,这样它将在列表中创建多行而不是一个。
【讨论】:
以上是关于Android:ListView在一行中包含所有值的主要内容,如果未能解决你的问题,请参考以下文章