2011-07-25 7 views
0

私のレイアウトは、それぞれが同じレイアウトの4つのパートに分かれています。 1つのイメージビュー、textview、listviewをそれぞれ持つ4つの相対レイアウト。レイアウトは、1つのイメージビュー、textview、およびlistviewを持つカスタムレイアウトの2x2グリッドのように考えることができます。リストビューは2つのテキストビューで構成されています。私はArrayAdapter <を持っている> listviewで使用する。私は、アダプタに渡す1つのデータ構造にリストビュー用のデータを持っています。アプリケーションを実行すると、レイアウトのリストビュー領域が空白になり、イメージビューとテキストビューが表示されます。問題のデバッグを試みたところ、アダプタのgetViewが呼び出されていないことがわかりました。カスタムリストビューにデータが入力されません!

レイアウトは次のようになります。 application1以下の下の部分はlistview shuldが来る場所です。 http://i.imgur.com/9ifIg.png

メインレイアウトファイル:

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_height="fill_parent" 
android:layout_width="fill_parent"> 
<RelativeLayout android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <RelativeLayout android:id="@+id/app1" 
     android:layout_width="150dip" 
     android:layout_height="250dip" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true"> 

     <ImageView android:id="@+id/app1Img" 
      android:layout_width="175dip" 
      android:layout_height="wrap_content" 
      android:src="@drawable/icon" 
      android:layout_centerHorizontal="true" 
      android:layout_below="@id/app1Data" 
      android:background="@color/blue"/> 

     <TextView android:id="@+id/app1Heading" 
      android:layout_width="fill_parent" 
      android:layout_height="40dip" 
      android:layout_below="@id/app1Img" 
      android:paddingLeft="25dip" 
      android:background="@color/color2"/> 
     <ListView android:id="@+id/app1Data" 
      android:layout_width="fill_parent" 
      android:layout_height="200dip" 
      android:scrollbars="vertical"> 
     </ListView> 

    </RelativeLayout> 


    <RelativeLayout android:id="@+id/app2" 
     android:layout_width="150dip" 
     android:layout_height="250dip" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentRight="true"> 

     <ImageView android:id="@+id/app2Img" 
      android:layout_width="175dip" 
      android:layout_height="wrap_content" 
      android:src="@drawable/icon" 
      android:layout_centerHorizontal="true" 
      android:background="@color/blue"/> 

     <TextView android:id="@+id/app2Heading" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/app2Img" 
      android:paddingLeft="25dip" 
      android:background="@color/color2"/> 

     <ListView android:id="@+id/app2Data" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:scrollbars="vertical" 
      android:layout_below="@id/app2Heading" 
      android:background="@color/color3"> 
     </ListView> 
    </RelativeLayout> 


    <RelativeLayout android:id="@+id/app3" 
     android:layout_width="150dip" 
     android:layout_height="250dip" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@id/app1"> 

     <ImageView android:id="@+id/app3Img" 
      android:layout_width="175dip" 
      android:layout_height="wrap_content" 
      android:src="@drawable/icon" 
      android:layout_centerHorizontal="true" 
      android:background="@color/blue"/> 

     <TextView android:id="@+id/app3Heading" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/app3Img" 
      android:paddingLeft="25dip" 
      android:background="@color/color2"/> 

     <ListView android:id="@+id/app3Data" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:scrollbars="vertical" 
      android:layout_below="@id/app3Heading" 
      android:background="@color/color3"> 
     </ListView> 
    </RelativeLayout> 
    <RelativeLayout android:id="@+id/app4" 
     android:layout_width="150dip" 
     android:layout_height="250dip" 
     android:layout_alignParentRight="true" 
     android:layout_below="@id/app2"> 

     <ImageView android:id="@+id/app4Img" 
      android:layout_width="175dip" 
      android:layout_height="wrap_content" 
      android:src="@drawable/icon" 
      android:layout_centerHorizontal="true" 
      android:background="@color/blue"/> 

     <TextView android:id="@+id/app4Heading" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/app4Img" 
      android:paddingLeft="25dip" 
      android:background="@color/color2"/> 

     <ListView android:id="@+id/app4Data" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:scrollbars="vertical" 
      android:layout_below="@id/app4Heading" 
      android:background="@color/color3"> 
     </ListView> 
    </RelativeLayout> 
</RelativeLayout> 
</LinearLayout> 

リストビューのレイアウトファイル:

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

    <TextView android:id="@+id/mainText" 
android:layout_width="150dip" 
android:layout_height="wrap_content" 
/> 

<TextView android:id="@+id/subscript" 
android:layout_width="150dip" 
android:layout_height="wrap_content" 
android:lines="2" 
android:singleLine="false"/> 
</LinearLayout> 

主な活動:

TextView app1Header; 
ImageView app1Img; 
ListView app1Data; 


TextView app2Header; 
ImageView app2Img; 
ListView app2Data; 


TextView app3Header; 
ImageView app3Img; 
ListView app3Data; 


TextView app4Header; 
ImageView app4Img; 
ListView app4Data; 

    ApplicationData applicationData = _allApplicationData.get(0); 
    app1Header.setText(applicationData.mHeadlineText); 
    ArrayList<DashboardListItem> application1ListItems = new ArrayList<DashboardListItem>(); 
    DashboardListItem application1ListItem1 = new DashboardListItem(); 
    DashboardListItem application1ListItem2 = new DashboardListItem(); 
    application1ListItem1.mainText = getApplicationMainTextForRow(0, applicationData.mApplicationName, _organization); 
    application1ListItem1.subscript = getApplicationSubscriptForRow(0, applicationData.mApplicationName, _organization); 
    application1ListItems.add(application1ListItem1); 
    application1ListItem2.mainText = getApplicationMainTextForRow(1, applicationData.mApplicationName, _organization); 
    application1ListItem2.subscript = getApplicationSubscriptForRow(1, applicationData.mApplicationName, _organization); 
    application1ListItems.add(application1ListItem2); 
    DashboardListAdapter application1Adapter = new DashboardListAdapter(getApplicationContext(), R.layout.dashboardlist, application1ListItems); 
    app1Data.setAdapter(application1Adapter); 

    applicationData = _allApplicationData.get(1); 
    app2Header.setText(applicationData.mHeadlineText); 
    ArrayList<DashboardListItem> application2ListItems = new ArrayList<DashboardListItem>(); 
    DashboardListItem application2ListItem = new DashboardListItem(); 
    application2ListItem.mainText = getApplicationMainTextForRow(0, applicationData.mApplicationName, _organization); 
    application2ListItem.subscript = getApplicationSubscriptForRow(0, applicationData.mApplicationName, _organization); 
    application2ListItems.add(application2ListItem); 
    DashboardListAdapter application2Adapter = new DashboardListAdapter(getApplicationContext(), R.layout.dashboardlist, application2ListItems); 
    app2Data.setAdapter(application2Adapter); 

    applicationData = _allApplicationData.get(2); 
    app3Header.setText(applicationData.mHeadlineText); 
    ArrayList<DashboardListItem> application3ListItems = new ArrayList<DashboardListItem>(); 
    DashboardListItem application3ListItem = new DashboardListItem(); 
    application3ListItem.mainText = getApplicationMainTextForRow(0, applicationData.mApplicationName, _organization); 
    application3ListItem.subscript = getApplicationSubscriptForRow(0, applicationData.mApplicationName, _organization); 
    application3ListItems.add(application3ListItem); 
    DashboardListAdapter application3Adapter = new DashboardListAdapter(getApplicationContext(), R.layout.dashboardlist, application3ListItems); 
    app3Data.setAdapter(application3Adapter); 

    applicationData = _allApplicationData.get(3); 
    app4Header.setText(applicationData.mHeadlineText); 
    ArrayList<DashboardListItem> application4ListItems = new ArrayList<DashboardListItem>(); 
    DashboardListItem application4ListItem = new DashboardListItem(); 
    application4ListItem.mainText = getApplicationMainTextForRow(0, applicationData.mApplicationName, _organization); 
    application4ListItem.subscript = getApplicationSubscriptForRow(0, applicationData.mApplicationName, _organization); 
    application4ListItems.add(application4ListItem); 
    DashboardListAdapter application4Adapter = new DashboardListAdapter(getApplicationContext(), R.layout.dashboardlist, application4ListItems); 
    app4Data.setAdapter(application4Adapter); 

アダプタファイル:

public class DashboardListAdapter extends ArrayAdapter<DashboardListItem>{ 

private Context mContext; 
private ArrayList<DashboardListItem> dashBoardData; 
int resource; 

public DashboardListAdapter(Context context, int textViewResourceId, 
     ArrayList<DashboardListItem> objects) { 
    super(context, textViewResourceId, objects); 
    // TODO Auto-generated constructor stub 
    mContext = context; 
    resource = textViewResourceId; 
    dashBoardData = objects; 
} 

@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return 0; 
} 

@Override 
public DashboardListItem getItem(int arg0) { 
    // TODO Auto-generated method stub 
    return null; 
} 

@Override 
public long getItemId(int position) { 
    // TODO Auto-generated method stub 
    return 0; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 
    View v = convertView; 
    if(convertView == null){ 
     convertView = new LinearLayout(getContext()); 
     String inflater = Context.LAYOUT_INFLATER_SERVICE; 
     LayoutInflater vi; 
     vi = (LayoutInflater) getContext().getSystemService(inflater); 
     v = vi.inflate(resource,null); 
    } 
    //DashboardListItem appData = dashBoardData.get(position); 
    DashboardListItem listItem = dashBoardData.get(position); 
    TextView mainText = (TextView) v.findViewById(R.id.mainText); 
    TextView subscript = (TextView)v.findViewById(R.id.subscript); 

    mainText.setText(listItem.mainText); 
    subscript.setText(listItem.subscript); 
    return convertView; 
} 

アプリケーションのコンパイルまたは実行中にエラーは発生していません。 getView()が呼び出されないだけです。アダプターに渡されるデータのarraylistには、データが確実に入力されるように手動で入力され、渡されます。ログからデータが空でないことを確認しました。

私はこれにひどく悩まされています。私は多くを検索しようとしましたが、私はまだgetView()が呼び出されない理由を見つけることができません。助けてください!それはあなたが移入するリストビューを伝えるために、データを表示したいポイントで

答えて

0

:(使用.setDatasetChanged()緊急だ

そして、私はあなたがコンストラクタに渡されてきた一覧からテキストdashBoardData.get(position)を設定すべきだと思います。

そして、あなたはXMLからリストビューをインスタンスどこ?私はいけないどこでもあなたのコードあなたが取り込まリストを取得するためにこれを行う必要があり

は(これはすべてのあなたのリストビューに適用されます)

でそれを見ます
+0

Nikolaに感謝の意を表します。 MainActivityのonCreate()のxmlからlistviewをインスタンス化するコードを持っています。私が失われたテキストをコンストラクタに渡して設定しています。これはgetView()で行われます。 DashboardListItem listItem = dashBoardData.get(position); mainText.setText(listItem.mainText); subscript.setText(listItem.subscript); アダプターにデータを追加した後で私の主な活動でadapter.notifyDataSetChanged()を追加しました。まだリストビューには表示されません。 –

+0

問題の解決策が見つかりました。それは私の間違いでした。アダプターgetviewで私は2つの間違いをしていた。 1つは、Rを使用してレイアウトを直接参照するのではなく、コンストラクタに渡すリソースを使用してビューを膨張させることでした。もう1つは、ビューを変換するビューを戻すときに、インフレーションしていました。とにかく助けてくれてありがとう。 –

0

問題の解決方法が見つかりました。それは私の間違いでした。アダプターgetviewで私は2つの間違いをしていた。 1つは、Rを使用してレイアウトを直接参照するのではなく、コンストラクタに渡すリソースを使用してビューを膨張させることでした。もう1つは、ビューを変換するビューを戻すときに、インフレーションしていました。とにかく助けてくれてありがとう。

関連する問題