Android:在java中的ListView菜单中定位项目?

时间:2014-01-22 09:52:45

标签: java android listview

我真的很喜欢Android开发,所以如果这个问题对你们这些人来说听起来很有趣,我很抱歉。 我需要将ListView菜单的项目集中在一起才是为了美观,但我真的不知道如何在不使用XML的情况下仅在java中编写代码。

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

        }
    }

4 个答案:

答案 0 :(得分:1)

您可以在此处更改传递给适配器的布局:

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

这件作品是行的布局:

android.R.layout.simple_list_item_1

检查this答案,解释它是什么。

答案 1 :(得分: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中设置它而不用担心它。

希望这有帮助。

答案 2 :(得分:0)

在设置适配器之前只需编写此代码,这里lv是你的listview     lv.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);

答案 3 :(得分: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,您可以添加更多内容,例如ImageViews和其他TextView。

称之为简单:

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