簡體   English   中英

Android:在Java的ListView菜單中定位項目?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM