【问题标题】:Print lines in Listview using an adapter使用适配器在 Listview 中打印行
【发布时间】:2012-12-19 13:06:41
【问题描述】:

每次按下按钮时,我都需要从 ListView 中的 cm1 和 cm2 行输出数据。行应在各种TextView中显示。

代码TEST.java:

public String cm1;
public String cm2;

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

        MyList = (ListView) this.findViewById(R.id.listStrings);
         setListAdapter();

        // button
        Button setup = (Button) this.findViewById(R.id.send);
        setup.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
        cm1 = "cm1text";
        cm2 = "cm2text";
        //xxxx
        }
        });
}

// adapter
private void setListAdapter() {
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
    R.layout.row //idknow what im must writehere to set cm1 string to cm1text tv
    List.setAdapter(adapter);
    }

代码 TEST.xml:

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

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

    <Button
        android:id="@+id/send"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Send" />
</LinearLayout>

代码行.xml:

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

<TextView
    android:id="@+id/cm1tv"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

<TextView
    android:id="@+id/cm2tv"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

</RelativeLayout>

点击 2 次后应该查看 ListView:

cm1
cm2
cm1
cm2

【问题讨论】:

  • 我做了一个类似于你问的视频,可能会有所帮助。 youtube.com/watch?v=61WvMzaihwU(是一个简单的应用程序,一个 EditText、Button 和 ListView。当按下按钮时,将文本添加到列表中)。可能只有一个文本而不是两个文本,但您可以调整。
  • 你可以上传资源吗?请人:)

标签: android android-listview listadapter


【解决方案1】:

也许你应该/可以做的是拥有这个;

String cm = cm1 + "\n" + cm2

应该输出哪个;
cm1
cm2

然后您将xml更改为只有一个textview和适配器代码,如下所示;

ArrayList<String> listItems = new ArrayList<String>();
ArrayAdapter<String> aa = new ArrayAdapter<String>(this, R.layout.row, R.id.textViewCM, listItems);
yourListView.setAdapter(aa);

然后,无论何时按下按钮;

// ...code to initialise/change cm
listItems.add(cm);
aa.notifyDataSetChanged(); // notifies listView to update it's view

应该做你所追求的,除非你必须拥有两个单独的 textView,在这种情况下,你需要写一个custom adapter,我已经做了一个如果您点击该链接,可以在我的网站上找到一些教程。

【讨论】:

  • 您网站上的 FizzBu​​zz 自定义适配器的示例?是的,我需要两台电视,因为我需要设置它们的背景并更改文本大小等操作,我可以用简单的电视来完成这些操作。谢谢老哥的回答! xD 对不起,我的英语不好。我尝试稍后提交答案,也许等待更多。
  • 正确,我对如何实现一个相当彻底的运行。在这里作为答案可能有点大。自定义适配器将解决您的问题。
  • FizzBu​​zz 可能是为了避免 2 台电视,你可以展示如何添加一个字符串,但其中的文本(行和 2 上的文本)的格式类似于 html 或只是颜色和粗体.. 如果可能的话.. 我尝试在此示例中使用标准电视道具,例如下划线stackoverflow.com/questions/2394935/…,但它不起作用(使用 Html.fromHtml 和 String.format)。
  • 试试这个例子; stackoverflow.com/questions/8033316/… 自定义适配器很容易实现,并且可能比一个多行文本视图更好的解决方案。
  • :) 我也试试 customadapter 和这个。
猜你喜欢
  • 2015-11-22
  • 1970-01-01
  • 1970-01-01
  • 2021-04-08
  • 2016-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多