Java 包含TextView的ListView和包含EditText的ListView不在同一行上

Java 包含TextView的ListView和包含EditText的ListView不在同一行上,java,android,android-listview,android-edittext,textview,Java,Android,Android Listview,Android Edittext,Textview,因此,图片将使您更好地了解问题: 请参见,我在左侧ListView添加了3TextView,在右侧ListView添加了3EditText,但它们不在同一行。 那我怎么解决呢 我的问题与XML有关: <LinearLayout android:id="@+id/inner_linear_layout_id" android:layout_width="fill_parent" android:layout_heig

因此,图片将使您更好地了解问题:

请参见,我在左侧
ListView
添加了3
TextView
,在右侧
ListView
添加了3
EditText
,但它们不在同一行。 那我怎么解决呢

我的问题与XML有关:

 <LinearLayout
            android:id="@+id/inner_linear_layout_id"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_below="@id/date_picker_id"
            android:baselineAligned="false"
            android:orientation="horizontal"
            android:weightSum="1" >

        <ListView
            android:id="@+id/dates_list_view_id"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.5" 
            />

        <ListView
            android:id="@+id/comments_list_view_id"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.5" 
            />
    </LinearLayout>

我的问题与Java有关:

arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,datesListView.getId());
datesListView.setAdapter(arrayAdapter);
commentsListView.setAdapter(arrayAdapter);


date.setTextSize(20);
datesListView.addFooterView(date);
commentText.setId(998);
commentText.setInputType(EditorInfo.TYPE_CLASS_TEXT);       
commentText.setHint("Add a comment");
commentText.setTextSize(15);

commentsListView.addFooterView(commentText); 
arrayAdapter=newarrayadapter(这是android.R.layout.simple_list_item_1,datesListView.getId());
setAdapter(arrayAdapter);
setAdapter(arrayAdapter);
日期:setTextSize(20);
datesListView.addFooterView(日期);
setId(998);
commentText.setInputType(EditorInfo.TYPE\u CLASS\u TEXT);
setHint(“添加注释”);
commentText.setTextSize(15);
commentsListView.addFooterView(commentText);

date
是一个
TextView
commentText
是一个
EditText
好的,这里有一个解决方案。当然,还有许多其他可能的解决办法

下面是列表项的XML。它描述了列表中单个条目的视图。在这里,它是用TextView和EditText构建的:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="horizontal"
              android:layout_width="match_parent"
              android:layout_height="wrap_content">

    <TextView
            android:id="@+id/text_datetime"
            android:text="8:20p.m."
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>

    <EditText
            android:id="@+id/edit_comment"
            android:text="no comment"
            android:layout_weight="1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>

</LinearLayout>

这是主活动的XML,它实际上包含ListView本身。但它没有指明子项(列表项)的外观,因为这是由上面的XML定义的:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
        >
    <ListView
            android:id="@+id/my_list"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            />
</LinearLayout>

这是MainActivity的代码,它包含一些绑定到ListView的演示数据。这实际上将ListView与其项以及ListView项对应的XML连接起来:

package com.example.myapp;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;

import java.text.SimpleDateFormat;
import java.util.*;

public class MyActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        ListView list = (ListView)findViewById(R.id.my_list);
        if (list != null) {
            final List<DemoItem> demoList = new ArrayList<DemoItem>();

            final SimpleDateFormat hourDateFormat = new SimpleDateFormat("HH:mm", Locale.getDefault());
            final Calendar c = Calendar.getInstance();
            final Date now = c.getTime();
            final String now_ = hourDateFormat.format(now);

            demoList.add(0, new DemoItem(now_, "first comment"));
            demoList.add(1, new DemoItem(now_, "second comment"));
            demoList.add(2, new DemoItem(now_, "third comment"));

            DemoAdapter adapter = new DemoAdapter(this, demoList);
            list.setAdapter(adapter);
        }
    }

    class DemoItem {
        public String datetime;
        public String comment;

        public DemoItem(String datetime, String comment) {
            this.datetime = datetime;
            this.comment = comment;
        }
    }

    class DemoAdapter extends ArrayAdapter<DemoItem> {

        public DemoAdapter(Context context, List<DemoItem> items) {
            super(context, R.layout.list_item, items);
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            if (convertView == null)
                convertView = getLayoutInflater().inflate(R.layout.list_item, null);

            DemoItem item = super.getItem(position);

            EditText editComment = (EditText)convertView.findViewById(R.id.edit_comment);
            if (editComment != null)
                editComment.setText(item.comment);

            TextView txtDatetime = (TextView)convertView.findViewById(R.id.text_datetime);
            if (txtDatetime != null)
                txtDatetime.setText(item.datetime);

            return convertView;
        }
    }
}
package com.example.myapp;
导入android.app.Activity;
导入android.content.Context;
导入android.os.Bundle;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.EditText;
导入android.widget.ListView;
导入android.widget.TextView;
导入java.text.simpleDataFormat;
导入java.util.*;
公共类MyActivity扩展了活动{
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ListView列表=(ListView)findViewById(R.id.my_列表);
如果(列表!=null){
最终列表demoList=新的ArrayList();
final SimpleDataFormat hourDateFormat=新SimpleDataFormat(“HH:mm”,Locale.getDefault());
最终日历c=Calendar.getInstance();
现在的最终日期=c.getTime();
最后一个字符串now=hourDateFormat.format(now);
添加(0,新的DemoItem(现在是“第一条评论”);
添加(1,新的DemoItem(现在是“第二条评论”);
添加(2,新的DemoItem(现在是“第三条评论”);
DemoAdapter=新的DemoAdapter(此为demoList);
list.setAdapter(适配器);
}
}
类DemoItem{
公共字符串日期时间;
公共字符串评论;
公共DemoItem(字符串日期时间、字符串注释){
this.datetime=datetime;
this.comment=注释;
}
}
类DemoAdapter扩展了ArrayAdapter{
公共DemoAdapter(上下文、列表项){
super(上下文、R.layout.list\u项目、项目);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
if(convertView==null)
convertView=GetLayoutFlater()。充气(R.layout.list_项,空);
DemoItem item=super.getItem(位置);
EditText editComment=(EditText)convertView.findViewById(R.id.edit\u comment);
if(editComment!=null)
editComment.setText(item.comment);
TextView txtDatetime=(TextView)convertView.findViewById(R.id.text\u datetime);
if(txtDatetime!=null)
txtDatetime.setText(item.datetime);
返回视图;
}
}
}
这就是它最终的样子:

如果您不使用ListView,那么这里有一个RelativeLayout也可以使用它。但它不是动态的,也不绑定到任何适配器:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">

    <TextView
            android:id="@+id/text_datetime1"
            android:text="8:20p.m."
            android:layout_toLeftOf="@+id/edit_comment1"
            android:layout_alignBaseline="@+id/edit_comment1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"/>

    <EditText
            android:id="@+id/edit_comment1"
            android:text="no comment"
            android:layout_alignParentRight="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>

    <TextView
            android:id="@+id/text_datetime2"
            android:text="8:20p.m."
            android:layout_toLeftOf="@+id/edit_comment2"
            android:layout_alignBaseline="@+id/edit_comment2"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"/>

    <EditText
            android:id="@+id/edit_comment2"
            android:text="no comment"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/edit_comment1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>

    <TextView
            android:id="@+id/text_datetime3"
            android:text="8:20p.m."
            android:layout_toLeftOf="@+id/edit_comment3"
            android:layout_alignBaseline="@+id/edit_comment3"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"/>

    <EditText
            android:id="@+id/edit_comment3"
            android:text="no comment"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/edit_comment2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>

</RelativeLayout>


日期时间和注释是一个元组。因此,您应该有一个单一的ListView,而每个ListItem都是一个视图,由datetime和注释的EditText组成。使用RelativeLayout和toLeftOf等在列表项内进行正确对齐。@Matthias一个视图如何同时包含TextView和EditText视图?请查看我的答案,谢谢。我有时间的时候再看一遍。谢谢但是你可以将编辑文本更多地放在右边?你可以使用android:layout\u weight来处理这两个项目。重量越高,物品使用的空间就越大。非常感谢你的帮助。我们可以聊天吗?我有麻烦了?