Android:ListView在一行中包含所有值
我在使用ListView显示值时遇到问题。 我为listview创建了适配器扩展基本适配器和Setter&Getter,但是它存储 所有值都在一行中 这是显示屏幕 我想这样显示Android:ListView在一行中包含所有值,android,android-fragments,android-listview,android-sqlite,Android,Android Fragments,Android Listview,Android Sqlite,我在使用ListView显示值时遇到问题。 我为listview创建了适配器扩展基本适配器和Setter&Getter,但是它存储 所有值都在一行中 这是显示屏幕 我想这样显示 public class DataShow_List_Adapter extends BaseAdapter { private LayoutInflater layoutInflater; private ArrayList<TimeTable_ListItems> timeTable_listIte
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;
}
}
这是我的适配器类
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;
}
}
这是从数据库返回字符串的方法
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);
}
}
public class\u DataShow\u片段扩展片段{
私有视图根;
私有ListView ListView\u mon;
私有数组列表时间表\u列表项\u数组;
私人时刻表项目时刻表项目;
私人数据库时间表数据库时间表;
专用数据显示列表适配器数据显示列表适配器;
公共星期一{
//必需的空公共构造函数
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
root=充气机。充气(R.layout.fragment\u monday\u data\u show\u容器,false);
FindView();
DatabaseTimeline=新的DatabaseTimeline(getActivity());
时间表\列表项=新时间表\列表项();
dataShow_list_adapter=新的dataShow_list_适配器(requirectivity());
setListItems();
时间表列表项数组。添加(时间表列表项);
dataShow_list_adapter.setTimeline_listItems_adapter(时间表_listItems_数组);
listView\u mon.setAdapter(数据显示\u列表\u适配器);
//为该碎片膨胀布局
返回根;
}
私有void setListItems(){
时间表\u列表项\u数组=新的ArrayList();
timeline_listItems.setTitle(databasetimeline.getTitle_database_mon());
dataShow_list_适配器。notifyDataSetChanged();
}
私有void findViews(){
listView\u mon=root.findviewbyd(R.id.listView\u monday);
}
}
如果你有什么建议,我想听听 问题是您只有一个标题作为标题字符串
getTitle\u database\u mon
返回result.toString()
。如果希望有多行,则需要在列表中有多个对象,并且每个对象都有唯一的标题。因此,不是一个时间表\u列表项
。您需要改用ArrayList
,让每个条目都包含一个标题,这样它将在列表中创建多行而不是一行 确保在项目布局中将换行内容用作高度