2014-01-22 45 views
0

我真的是Android開發新手,所以我很抱歉,如果這個問題可能聽起來很有趣的一些你。 爲了唯美的緣故,我需要將我的ListView菜單的項目居中,但我真的不知道如何,因爲代碼只用java編寫而沒有使用XML。Android:在java中的ListView菜單中定位項目?

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(); 
     } 

     } 
    } 
+0

使用自定義的適配器和自定義佈局你想要的方式 – Raghunandan

回答

0

您需要創建自己的適配器:

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放置到任何位置的位置,您將可以添加更多,如ImageView和其他TextViews。

,並呼籲它很簡單:

 MyAdapter adapter = new MyAdapter(context, myList); 
    listView.setAdapter(adapter); 
1

您可以更改佈局要傳遞到您的適配器在這裏:

setListAdapter(new ArrayAdapter<String>(Menu.this, android.R.layout.simple_list_item_1, classes)); 

這件作品是該行佈局:

android.R.layout.simple_list_item_1 

檢查this答案,說明什麼是。

0

它不僅用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中設置它,而不是擔心。

希望這會有所幫助。

0

只需在設置適配器之前編寫此代碼,這裏lv是您的列表視圖 lv.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);

相關問題