2016-05-06 1 views
0

Androidの学習を始めたばかりで、メインXMLの一部がリストビューである単純なビューを作成しようとしています。ここでXMLのListViewにデータを入れる方法は?

は、私は私が私のListViewにそれらのデータを置けばいいのか、データのArrayListのを返すgetDatafromFile()と呼ばれる機能を持っていると仮定すると、私のmain.xml

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


    <RelativeLayout 
     android:layout_width="100dp" 
     android:layout_height="match_parent" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentTop="true" 
     android:id="@+id/Menu"> 

     <ImageButton 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/menu_item_1" 
      android:layout_alignParentTop="true" 
      android:layout_centerHorizontal="true" 
      android:layout_marginTop="129dp" /> 

    </RelativeLayout> 

    <FrameLayout 
     android:layout_width="match_parent" 
     android:layout_height="60dp" 
     android:layout_toEndOf="@+id/Menu" 
     android:layout_toRightOf="@+id/Menu" 
     android:layout_alignParentTop="true" 
     android:id="@+id/Banner"> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:text="Account Log" 
      android:layout_gravity="center" 
      android:inputType="none" 
      android:textStyle="bold"/> 
    </FrameLayout> 

    <ListView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/Log" 
     android:layout_toRightOf="@+id/Menu" 
     android:layout_below="@+id/Banner" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:choiceMode="none" 
     android:clickable="false" 
     android:contextClickable="true" 
     android:fadeScrollbars="true" /> 

</RelativeLayout> 

のですか?

ArrayAdapterの使用について聞いたことがありますが、私が見た例では、ListViewがレイアウト全体に配置されています。あなたのListViewにデータを置くための最良の方法は、ArrayAdapterクラスを作ることであるリストビューを作成

public class MainActivity extends AppCompatActivity { 

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

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); //here is the layout where your views exists 

    for (int i=0;i<=20;i++){ 
     arrayList.add("List Items"+i); //assume we passed the data in arraylist 
    } 
    ListView listView=(ListView)findViewById(R.id.log); //your listview 

    ArrayAdapter arrayAdapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,arrayList);//the second argument is a layout file that have a textview 

    listView.setAdapter(arrayAdapter); 



} 
} 

答えて

1

+0

更新しました精巧な例をありがとうございました! 'SaleAdapter'が何であるか知りたいだけですか? 'R.layout.list_item'と' R.layout.salelist_item'はどこから来たのですか? – Beginner

+0

私のプロジェクトのコピー貼り間違いでした。私はlist_itemに変更しました。今すぐ確認してください。 –

+0

それでは、今はっきりしていますか? –

1

完全なコード。カスタムアダプタクラスを使用して、必要に応じて変更できるようにすることをお勧めします。 ArrayAdapterを拡張するクラスを作成できます。次に、リストビューの中で必要なarraylistをそのアダプタコンストラクタに渡します。 は、例えば、下記のおアクティビティ内のカスタムアダプタクラス

public class CustomAdapter extends ArrayAdapter<DataInfo> { 


ArrayList<DataInfo> itemList =new ArrayList<>(); 
Context context; 
LayoutInflater inflater; 
public CustomAdapte(Context context, ArrayList<VegInfo> list) { 
    super(context, R.layout.list_item, list); 
    this.context = context; 
    itemList = list; 
    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
} 
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    //getting an item from the list 
    DataInfo item = itemList.get(position); 
    if(convertView==null) 
     convertView = inflater.inflate(R.layout.list_item,parent,false); 

     //displaying some data from your data info in a textview 
    TextView textView = (TextView) convertView.findViewById(R.id.tv); 
    textView.setText(item.subitem); 


    return convertView; 
} 
} 

で、あなたはそのアダプタにデータを設定することができます。

CustomAdapter yourAdapter = new CustomAdapte(activity,yourArrayList); 
yourListView.setAdapter(yourAdapter); 

ここで、リストビューには、アレイリスト内のデータがあります。配列リストに変更があるたびに、それはここだけ

yourAdapter.notifydatasetchanged(); 

を呼び出すことによって、リストビューに反映させることができるlist_itemを使用すると、単一のリストアイテムビューのために作成する必要があり、カスタムXMLファイルです。

希望すると、これが役立ちます。そうでない場合は、私に教えてください。幸せなコーディング。

+0

私は知覚が遅れていることは知っていますが、まだ 'setContentView'を使用する必要がありますか? 'simple_list_item1'は何をしますか? – Beginner

+0

@Beginner私は答えを –

関連する問題