Listview中的内容是不可见的

时间:2015-07-03 16:12:34

标签: java android listview android-listview android-arrayadapter

我是Android新手,我目前正在开发一个包含简单文本列表视图的应用。当用户单击列表视图中的文本时,将触发共享意图。我使用自定义适配器为listview中的文本设置不同的字体。问题是,当我运行应用程序时,正在查看列表视图,但内容是不可见的。但是当我点击列表视图时,共享意图就会被触发。我不知道是什么导致了它。我在Stack Overflow中搜索并谷歌并尝试了一些步骤,但它并没有为我工作。请帮帮我。提前谢谢。

代码:

main.xml中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.proda.technologies.app.testapp"
android:background="@drawable/inspirationalbg">

<ImageButton
    android:layout_width="130dp"
    android:layout_height="40dp"
    android:id="@+id/back_Button"
    android:background="@drawable/backbutton"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

<ListView
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:id="@+id/list"
    android:layout_below="@+id/back_Button"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

</RelativeLayout>

list_item.xml

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

<TextView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:textColor="#ffffff"
    android:id="@+id/instView"/>

</LinearLayout>

CustomAdapter.java

 public class CustomAdapter extends ArrayAdapter<String>{
private final Context context;
private final String[] values;


public CustomAdapter(Context context, String[] values) {
    super(context,R.layout.list_item,values);
    this.context = context;
    this.values = values;

}

@Override
public View getView(int position, View view, ViewGroup parent) {
    LayoutInflater inflater = LayoutInflater.from(context);
   View rview = inflater.inflate(R.layout.list_item,null);
    TextView txt = (TextView)rview.findViewById(R.id.instView);
    AssetManager mgr = context.getAssets();
    Typeface tf = Typeface.createFromAsset(mgr,"fonts/RalewayRegular.ttf");
    txt.setTypeface(tf);
    return rview;
}


}

Main.java

String[] phone = {"Nexus","Htc","Samsung","Oppo","Apple"};
Listview inslist;
inslist = (ListView)findViewById(R.id.list);
CustomAdapter adapter = new CustomAdapter(Main.this,phone);
inslist.setAdapter(adapter);

我没有收到任何错误。我可以看到列表视图,其中的行分隔每个内容。但实际内容(文本)是不可见的。请帮帮我

2 个答案:

答案 0 :(得分:3)

您的ListViewItem包含TextView,但其值不是init。 尝试在xml文件或java代码中设置textView的值。 尝试以下方法之一:

<强> 1。按XML文件:list_item.xml

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

<TextView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:textColor="#ffffff"
    android:id="@+id/instView"
    android:text="This is text sample"/>

</LinearLayout>

<强> 2。通过Java代码:CustomAdapter.java

public class CustomAdapter extends ArrayAdapter<String>{
private final Context context;
private final String[] values;


public CustomAdapter(Context context, String[] values) {
    super(context,R.layout.list_item,values);
    this.context = context;
    this.values = values;

}

@Override
public View getView(int position, View view, ViewGroup parent) {
    LayoutInflater inflater = LayoutInflater.from(context);
   View rview = inflater.inflate(R.layout.list_item,null);
    TextView txt = (TextView)rview.findViewById(R.id.instView);
    txt.setText(values[position]);
    AssetManager mgr = context.getAssets();
    Typeface tf = Typeface.createFromAsset(mgr,"fonts/RalewayRegular.ttf");
    txt.setTypeface(tf);
    return rview;
}


}

答案 1 :(得分:1)

我没有看到你在TextView中添加文字的任何地方。

您可以将数据显示在getView()方法内的TextView视图中,如:

txt.setText(values.get(position));