【问题标题】:Android: positioning items in ListView menu in java?Android:在java中的ListView菜单中定位项目?
【发布时间】:2014-01-22 18:28:03
【问题描述】:

我真的是 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();
        }

        }
    }

【问题讨论】:

  • 使用自定义适配器并以您想要的方式自定义布局

标签: java android listview


【解决方案1】:

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

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

这块是行的布局:

android.R.layout.simple_list_item_1

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

【讨论】:

    【解决方案2】:

    您需要创建自己的适配器:

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

    【讨论】:

      【解决方案3】:

      它不仅是用 Java 编写的,您还必须为 Adapter 提供 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 中设置它,而不必担心。

      希望这会有所帮助。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-02-21
          • 2012-03-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多