與自定義項目
回答
你應該通過擴展BaseAdapter
,ArrayAdapter
等聲明自己的適配器ListView
有你可以寫自己的實現getView()
方法負責每個項目在你的ListView
的看法。
內getView()
方法,你可以只是從你的XML與佈局膨脹視圖,並在需要的數據填充它。
您可以通過創建可ListView的getView方法的項目,相同的佈局內充氣將適用於所有的人都爲@nikis太說,自己的自定義佈局實現這一目標。
下面是一個容易理解和您的需求,工作的例子。 :)
http://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text/
請至少包括有關文章的基本知識,以便文章消失時仍然有答案。 – PearsonArtPhoto
謝謝atul o holic –
至少給他一些基本的信息,而不僅僅是給一個教程的鏈接。 – mike20132013
在這裏你去。這至少會瀏覽你在一定程度上。我在組中有一個圖像,三個文字瀏覽。在你的情況下,有一個圖像視圖和兩個文本視圖,這是唯一的區別。
這裏是我是如何實現它:
步驟1:在MainActivity,我做了這是有5件事情,一個ImageView的4個textviews自定義適配器。
下面的代碼:
public class ListViewExample extends Activity {
ArrayList<String> QuestionForSliderMenu = new ArrayList<String>();
ArrayList<String> NAME = new ArrayList<String>();
ArrayList<String> STATE = new ArrayList<String>();
ArrayList<String> LATITUDE = new ArrayList<String>();
ArrayList<String> LONGITUDE = new ArrayList<String>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listview_layout);
ListView listView = (ListView) findViewById(R.id.customlistView1);
MyAdapter adapter = new MyAdapter(this, QuestionForSliderMenu);
listView.setAdapter(adapter);
try {
yourjson();
} catch (Exception e) {
e.printStackTrace();
}
}
//Just for example. You can do anything to get in your array list.
public void yourjson() {
NAME = new ArrayList<String>();
STATE = new ArrayList<String>();
LATITUDE = new ArrayList<String>();
LONGITUDE = new ArrayList<String>();
try {
JSONObject json = new JSONObject(loadJSONFromAsset());
JSONArray array = json.getJSONArray("cities");
QuestionForSliderMenu = new ArrayList<String>();
Log.d("Cities: ", array.toString());
for (int my = 0; my <= array.length(); my++) {
JSONObject c = array.getJSONObject(my);
String name = c.getString("name");
String state = c.getString("state");
String latitude = c.getString("latitude");
String longitude = c.getString("longitude");
NAME.add(name);
STATE.add(state);
LATITUDE.add(latitude);
LONGITUDE.add(longitude);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
下面是我使用的自定義適配器。
第二步:
private class MyAdapter extends BaseAdapter {
private int lastPosition = -1;
private Context context;
private ArrayList<ModelClass> name;
private ArrayList<ModelClass> state;
private ArrayList<ModelClass> latitude;
private ArrayList<ModelClass> longitude;
private ArrayList<ModelClass> MainItems;
private ArrayList<String> mainList;
public MyAdapter(Context context, ArrayList<ModelClass> name,
ArrayList<ModelClass> state, ArrayList<ModelClass> latitude,
ArrayList<ModelClass> longitude) {
super();
this.context = context;
this.name = name;
this.state = state;
this.latitude = latitude;
this.longitude = longitude;
}
public MyAdapter(Context applicationContext,
ArrayList<String> questionForSliderMenu1) {
super();
this.mainList = questionForSliderMenu1;
}
@Override
public int getCount() {
return STATE.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) getApplicationContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.cities_row, null);
}
ImageView img = (ImageView)convertView.findViewById(R.id.customimageView1);
TextView name = (TextView) convertView.findViewById(R.id.customtextView1);
TextView state = (TextView) convertView.findViewById(R.id.customtextView2);
TextView latitude = (TextView) convertView
.findViewById(R.id.Latitude);
TextView longitude = (TextView) convertView
.findViewById(R.id.Longitude);
try {
img.setBackgroundResource(R.drawable.ic_launcher);
name.setText(NAME.get(position));
state.setText(STATE.get(position));
latitude.setText(LATITUDE.get(position));
longitude.setText(LONGITUDE.get(position));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return convertView;
}
}
這是檢索從資產JSON的方法:這是你的情況是可選的。但現在,我必須將這個用於上述方法。
public String loadJSONFromAsset() {
String json = null;
try {
InputStream is = getApplicationContext().getAssets().open(
"yourjson.json");
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
json = new String(buffer, "UTF-8");
} catch (IOException ex) {
ex.printStackTrace();
return null;
}
return json;
}
}
最後兩個XML,
一:你的ListView佈局
<?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"
android:orientation="vertical" >
<ListView
android:id="@+id/customlistView1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
二:你的物品列表視圖,
<?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"
android:orientation="vertical" >
<ImageView
android:id="@+id/customimageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"/>
<TextView
android:id="@+id/Name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Cities"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/State"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="States"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/Latitude"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Latitude"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/Longitude"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Longitude"
android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>
我希望這可以幫助你回答你的問題... :)
如果你喜歡我的回答,並認爲它有幫助,請接受它..:)
- 1. QTreeView與自定義項目
- 2. 自定義ObservableCollection與選定的項目
- 3. 了JavaFx 2 ChoiceBox與自定義項目
- 4. 添加項目自定義ListView與自定義自定義適配器
- 5. 預定義和自定義項目
- 6. 自定義ReSharper TODO項目
- 7. UIMenuController自定義項目
- 8. 自定義NSMenu項目
- 9. 自定義QTreeView項目
- 10. Spinner中的項目自定義項數
- 11. Qt自定義小部件與自定義項目 - Qt設計器/ uic
- 12. 自定義ViewPager中心當前項目與適配器中的自定義getPageWidth
- 13. 自定義列表視圖與自定義列表項目有微調
- 14. 如何在其他自定義項目中的自定義項目中引用自定義屏幕
- 15. m2e /自定義項目特定設置
- 16. 自定義列表視圖:與特定項目相關
- 17. ListView控件與自定義項目的佈局和CheckBox - 項目無法點擊
- 18. 自定義UIImagePickerController的導航項目
- 19. 自定義tabbar和tabbar項目
- 20. ListView項目的自定義偵聽器
- 21. Bamboo自定義部署項目變量
- 22. 自定義設置項目對話框
- 23. pyqt自定義項目代表qtablewidget
- 24. 使用grunt進行自定義項目
- 25. ClickListener自定義動作條項目(ActionBarSherlock)
- 26. 清單項目的自定義背景
- 27. 自定義項目類型模板
- 28. QListView中的自定義項目
- 29. 如何自定義UISegmentedControl項目
- 30. Flash中的自定義項目符號
在來這裏之前,你甚至嘗試過搜索嗎?這個 –
必須至少有一打教程,但我想試試,但是我想要。 sry –