2017-04-09 62 views
-1

我正在嘗試使用ListView組件,並且我被卡住了。 我只想在我的活動中查看列表。我在網上搜索了一個解決方案, 但我不知道什麼是錯在我的代碼ListView未在活動中顯示

activity_main.xml中:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.a05042.listviewproject.MainActivity"> 

    <ListView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentTop="true" 
     android:id="@+id/ListViewMain" 
     android:background="@android:color/holo_blue_bright" /> 
</RelativeLayout> 

activity_list.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:text="TextView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:textAppearance="@style/TextAppearance.AppCompat.Display1" 
     android:textAlignment="center" /> 
</LinearLayout> 

JAVA:

public class MainActivity extends AppCompatActivity { 
    String[] myItems = {"Sony","Toshiba","Samsung","y","daniel","sold","sail"}; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     MakeListView(); 
    } 

    public void MakeListView() { 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.activity_list,myItems); 
     ListView lv = (ListView)findViewById(R.id.ListViewMain); 
     lv.setAdapter(adapter); 
    } 

} 
+0

是什麼問題? –

+0

應用程序錯誤你不能看到列表,當應用程序啓動它的近期進展... –

回答

1

您正在使用的構造函數是

/** 
    * Constructor 
    * 
    * @param context The current context. 
    * @param resource The resource ID for a layout file containing a TextView to use when 
    *     instantiating views. 
    * @param objects The objects to represent in the ListView. 
    */ 
    public ArrayAdapter(@NonNull Context context, @LayoutRes int resource, @NonNull T[] objects) { 
     this(context, resource, 0, Arrays.asList(objects)); 
    } 

ArrayAdapter期望內部只有TextView的佈局。你有一個TextView裹在LinearLayout。你要麼改變你的佈局,以

<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:text="TextView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:textAppearance="@style/TextAppearance.AppCompat.Display1" 
    android:textAlignment="center" /> 

,或者使用,可以讓你提供構造函數中的TextView的id使用

+1

我用你的解釋,我創建一個新的代碼,現在我用我的自定義列表和每一件事情工作很好,謝謝你的幫助。 –

0

您正在使用簡單列表視圖

所以你可以改變您的適配器到

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, android.R.id.text1, myItems); 

或者如果你想自定義佈局項目

,那麼你必須讓自己的適配器

From here

+0

謝謝大家我明白我的問題與我的適配器我使用simple_list_item1開始,我會嘗試的約束 –