0

出于某种原因,我无法让文本显示在我的列表视图中。当我运行以下示例时,两个空白列表元素显示为不带文本。另外,调试输出显示TextView中文本的值是正确的。这是我的主要活动:当使用自定义适配器时,文本没有显示在ListView中

import java.util.ArrayList; 

import android.app.ListActivity; 
import android.content.Context; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.TextView; 

public class MyListActivity extends ListActivity { 

    private static final String TAG = "MyListActivity"; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     ArrayList<String> values = new ArrayList<String>(); 

     values.add("Test1"); 
     values.add("Test2"); 

     TimelineAdapter adapter = new TimelineAdapter(
       this.getApplicationContext(), values); 
     setListAdapter(adapter); 

     Log.d(TAG, "Finished onCreate"); 
    } 

    private class TimelineAdapter extends ArrayAdapter<String> { 

     ArrayList<String> items; 

     public TimelineAdapter(Context context, ArrayList<String> values) { 
      super(context, R.layout.row, R.id.message, values); 
      this.items = values; 
     } 

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

      Log.d(TAG, "Entered getView"); 

      // For future performance optimization 
      View view = convertView; 

      // Inflate the view 
      if (view == null) { 
       LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       view = inflater.inflate(R.layout.row, parent, false); 
       Log.d(TAG, "View inflated"); 
      } 

      // Get current value 
      String value = items.get(position); 
      Log.d(TAG, "Shout: " + value); 

      // Set TextView text 
      if (value != null) { 
       TextView message = (TextView) view.findViewById(R.id.message); 

       message.setText(value); 
       Log.d(TAG, (String) message.getText()); 
       Log.d(TAG, "Textview text set"); 
      } 
      return view; 
     } 

    } 
} 

这里是我的row.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="?android:attr/listPreferredItemHeight" 
    android:padding="6dip"> 

    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="0dip" 
     android:id="@+id/message" 
    /> 

</LinearLayout> 

回答

2

我没有看到的setContentView(..),也许这就是问题?

+0

如果Activity扩展ListActivity,则不需要setContentView()。你可以拥有它,但我已经尝试过了。但它没有什么区别。 – gsingh2011 2012-02-26 20:25:15

+1

我运行你的代码。它工作时,TextView的layout_height设置为wrap_content或fill_parent – 2012-02-27 09:15:10

+0

哦,哇。我使用了教程中的行布局代码,虽然我很困惑为什么高度为零,我认为它会在稍后得到覆盖或类似的东西。感谢您花时间运行我的代码! – gsingh2011 2012-02-27 16:44:53

1

我使用的是书籍的数据绑定示例。您好,由Ed Burnette(伟大的书)的Android

我将项目布局从RelativeLayout更改为LinearLayout;但是,当我进行更改时,我没有添加方向。

一旦我加入android:orientation =“vertical”一切正常。

我这一个人的两个小时。

相关问题