[英]Android: positioning items in ListView menu in java?
我真的是Android開發的新手,如果這個問題聽起來對您有些好笑,我感到抱歉。 為了美觀起見,我需要將ListView菜單的各項居中,但是我真的不知道怎么做,因為該代碼僅使用Java編寫而不使用XML。
package com.example.mysqltest;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class Menu extends ListActivity {
String classes[] = {"ProductList", "example1", "example2", "example3", "example4", "example5"};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(Menu.this, android.R.layout.simple_list_item_1, classes));
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
String local = classes[position];
try {
Class ourClass = Class.forName("com.example.mysqltest." + local);
Intent ourIntent = new Intent(Menu.this, ourClass);
startActivity(ourIntent);
} catch(ClassNotFoundException e){
e.printStackTrace();
}
}
}
您可以在此處更改傳遞給適配器的布局:
setListAdapter(new ArrayAdapter<String>(Menu.this, android.R.layout.simple_list_item_1, classes));
這是行的布局:
android.R.layout.simple_list_item_1
檢查此答案以解釋其含義。
它不僅是用Java編寫的,而且還必須提供XML布局以使適配器膨脹。 就您而言,您擁有R.layout.simple_list_item_1
。 您在此處設置的位置:
setListAdapter(new ArrayAdapter<String>(Menu.this, android.R.layout.simple_list_item_1, classes));
由於您尚未發布R.layout.simple_list_item_1
的內容-我必須假定它只是其中包含的TextView
。 這樣,您可以很容易地將文本與以下內容對齊:
TextView textView =(TextView)findViewById(R.id.texviewid);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
失敗的話,您總是可以在R.layout.simple_list_item_1
的XML中進行設置,而不必擔心。
希望這可以幫助。
只需在設置適配器之前編寫此代碼,這里lv是您的列表視圖lv.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
您需要創建自己的適配器:
public class MyAdapter extends BaseAdapter{
private LayoutInflater inflater;
private List<String> data;
public MyAdapter(Context context, List<String> data){
this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.data = data;
}
public int getSize(){
return data.getSize();
}
public Object getItem(int position){
return data.get(position);
}
public View getView(View convertView, int position, ViewGroup parent){
View v = convertView;
ViewHolder h;
if(v == null){
v = inflater.inflate(R.layout.my_adapter, false);
h = new ViewHolder();
t.tv = (TextView) v.findViewById(R.id.my_textview);
v.setTag();
}else{
h = (ViewHolder) v.getTag();
}
String s = (String) getItem(position);
h.tv.setText(s);
return v;
}
public class ViewHolder{
TextView tv;
}
}
由於Eclipse中的自動補全功能,我並沒有真正記住,但是它應該看起來像這樣。
您可以在my_adapter.xml中將TextView放置在所需的任何位置,還可以添加更多內容,例如ImageViews和其他TextViews。
並稱之為簡單:
MyAdapter adapter = new MyAdapter(context, myList);
listView.setAdapter(adapter);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.