2016-04-23 37 views
1

以前はほとんど同じコードを使用していましたが、ListViewの要素が表示されません。申し訳ありませんが、このタイプの質問をする必要がありますが、真剣にそれが機能していない理由を理解できません。私が見た他の同様の質問のどれも役に立ちませんでした。ListViewの要素が表示されない

アイテムとListViewの高さは問題ありません。何が起こっているのか分かりません。みんなありがとう。

メインAcitivity:

ここでは、コードのダンプです

import android.app.Activity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.TextView; 
import java.util.ArrayList; 

public class CitiesListAdapter extends ArrayAdapter<String> { 

    private final Activity context; 
    private final ArrayList<String> cities; 

    public CitiesListAdapter(Activity context, ArrayList<String> cities) { 
     super(context, R.layout.cityitem); 
     this.context = context; 
     this.cities = cities; 
    } 

    @Override 
    public View getView(int position, View view, ViewGroup parent) { 
     LayoutInflater inflater = context.getLayoutInflater(); 
     View rowView = inflater.inflate(R.layout.cityitem, null, true); 

     TextView lblCity = (TextView)rowView.findViewById(R.id.lblCity); 
     lblCity.setText(this.cities.get(position)); 

     return rowView; 
    } 
} 

が続いてここでの主なレイアウトです:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_select_city); 
    findViewById(R.id.loadingPanel).setVisibility(View.GONE); // remove loading animation 

    ArrayList<String> citiesList = new ArrayList<>(); 
    citiesList.add("Waterloo"); 
    citiesList.add("Guelph"); 
    populateCities(citiesList); 
} 

public void populateCities(ArrayList<String> citiesList) { 

    // see what the list is 
    Toast.makeText(getApplicationContext(),citiesList.toString(),Toast.LENGTH_LONG).show(); 

    // populate the ListView 
    CitiesListAdapter citiesListAdapter = new CitiesListAdapter(this, citiesList); 
    ListView citiesListView = (ListView)findViewById(R.id.cities_list); 
    citiesListView.setAdapter(citiesListAdapter); 

    // listen for when a city in the list is clicked 
    citiesListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      // go to the bar list activity (send the city and province with it) 
      TextView lblCity = (TextView)view.findViewById(R.id.lblCity); 
      String city = lblCity.getText().toString(); 
      Toast.makeText(getApplicationContext(), city, Toast.LENGTH_LONG).show(); 
     } 
    }); 
} 

はここでリストアダプターコード(CitiesListAdapter)です

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:context="com.myapp.SelectCity"> 

    <RelativeLayout 
     android:id="@+id/loadingPanel" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:gravity="center" > 

     <ProgressBar 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:indeterminate="true" 
      android:id="@+id/progressBar" /> 
    </RelativeLayout> 

    <ImageButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/btnBack" 
     android:layout_marginTop="5dp" 
     android:layout_marginLeft="5dp" 
     android:onClick="back" 
     android:src="@mipmap/ic_menu_back" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

    <ImageButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/btnRefresh" 
     android:layout_marginTop="5dp" 
     android:layout_marginLeft="5dp" 
     android:onClick="refresh" 
     android:src="@mipmap/ic_action_refresh" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentRight="true" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Select City" 
     android:id="@+id/lblTitle" 
     android:layout_below="@+id/btnBack" 
     android:layout_centerHorizontal="true" /> 


    <RelativeLayout 
     android:id="@+id/listViewLayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@+id/lblTitle" 
     android:layout_marginLeft="20dp" 
     android:layout_marginRight="20dp" 
     android:layout_marginBottom="20dp" 
     android:layout_marginTop="20dp"> 

     <ListView 
      android:background="#F00" 
      android:id="@+id/cities_list" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_alignParentBottom="true" 
      android:layout_alignParentTop="true" /> 

    </RelativeLayout> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="New Button" 
     android:id="@+id/button" 
     android:layout_below="@+id/listViewLayout" 
     android:layout_centerHorizontal="true" /> 

</RelativeLayout> 
E/Surface: getSlotFromBufferLocked: unknown buffer: 0xab7ccc40 
:はその後ListView項目のレイアウト( cityitem.xml):

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:orientation="vertical" 
    android:layout_height="match_parent"> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:text="City" 
     android:id="@+id/lblCity" /> 
</LinearLayout> 

編集:私も(ちょうどLogCatに潜入)Androidは修正するように見えることができないことを、この愚かなエラーを取得していたように見えます

何も表示されない理由がわからない場合。

スクリーンショット:http://prntscr.com/avpy9s

+0

すると、あなたがPhanVănLinh編集@スクリーンショット –

+0

を添付することができます。 –

答えて

2

あなたのコンストラクタでsuper呼び出しがArrayListが含まれていない、またあなたがリストのサイズを返すようにgetCount()をオーバーライドしているので、あなたのAdapterは、アイテム数、およびListViewウォンのため0を返しますViewを取得しようとしていません。 superコールにArrayListを含めるか、getCount()メソッドをオーバーライドしてcities.size()を返すことができます。

ArrayListStringの場合、必ずしもカスタムAdapterが必要なわけではありません。レイアウトをとるArrayAdapterのコンストラクタと、リソースIDがTextViewの単純なコンストラクタを使用できます。

ArrayAdapter<String> citiesListAdapter = new ArrayAdapter<>(this, 
                  R.layout.cityitem, 
                  R.id.lblCity, 
                  cities); 
+1

Jeeezありがとう。コピー時に引数が多すぎます。 –

0

ListViewにはレイアウトがありません。 ListView内にレイアウト(線形または相対)を追加する必要があります。このような!レイアウトで

<ListView 
<RelativeLayout /> 
/> 

、あなたは何をしたいのショー宣言 - のTextViewやImageViewのかなど

関連する問題