我真的很喜欢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();
}
}
}
答案 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);