Android:ListView在一行中包含所有值

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

我在使用ListView显示值时遇到问题。 我为listview创建了适配器扩展基本适配器和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;
    }
}

这是我的适配器类

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
,让每个条目都包含一个标题,这样它将在列表中创建多行而不是一行

确保在项目布局中将换行内容用作高度