Java Android动态列表视图
我想在布局顶部固定一个按钮,并在按钮下方创建一个动态编辑文本。我正在创建自己的适配器。单击按钮时,另一个活动开始并返回字符串,该字符串将显示在按钮下方的列表视图项上。我该怎么做 我的XML布局-Java Android动态列表视图,java,android,android-layout,android-listview,android-adapter,Java,Android,Android Layout,Android Listview,Android Adapter,我想在布局顶部固定一个按钮,并在按钮下方创建一个动态编辑文本。我正在创建自己的适配器。单击按钮时,另一个活动开始并返回字符串,该字符串将显示在按钮下方的列表视图项上。我该怎么做 我的XML布局- <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/button1"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
<EditText
android:id="@+id/etList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10" >
</EditText>
</LinearLayout>
我的列表视图适配器-
package com.example.tasktable;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.TextView;
public class TaskAdapter extends ArrayAdapter<String> {
private final Context context;
private final String[] values;
Button click;
TextView textView;
public TaskAdapter(Context context, String[] values) {
super(context, R.layout.list_view, values);
this.context = context;
this.values = values;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
LayoutInflater inflator = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflator.inflate(R.layout.list_view, parent, false);
click = (Button) rowView.findViewById(R.id.button1);
textView = (TextView) rowView.findViewById(R.id.etList);
textView.setText(values[position]);
return rowView;
}
}
package com.example.tasktable;
导入android.content.Context;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.TextView;
公共类TaskAdapter扩展了ArrayAdapter{
私人最终语境;
私有最终字符串[]值;
点击按钮;
文本视图文本视图;
公共TaskAdapter(上下文上下文,字符串[]值){
super(上下文、R.layout.list\u视图、值);
this.context=上下文;
这个值=值;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
//TODO自动生成的方法存根
LayoutFlater充气器=(LayoutFlater)上下文
.getSystemService(上下文布局\充气机\服务);
视图行视图=充气机。充气(R.layout.list\u视图,父视图,false);
单击=(按钮)rowView.findViewById(R.id.button1);
textView=(textView)rowView.findViewById(R.id.etList);
setText(值[位置]);
返回行视图;
}
}
我不想用每个编辑文本膨胀按钮。您可以用相对布局定位布局元素。
//试试这种方法,希望这能帮助您。。。
**XML**代码
**activity.xml**
**list_activity.xml**
**list_item.xml**
**活动**代码
**我的活动**
公共类MyActivity扩展了活动{
专用按钮btnAdd;
私人线路布局贷款;
私有最终整数获取列表项=1;
私有HashMap listItemMap;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
btnAdd=(按钮)findviewbyd(R.id.btnAdd);
lnrEdit=(LinearLayout)findViewById(R.id.lnrEdit);
listItemMap=新的HashMap();
btnAdd.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Intent Intent=新的Intent(MyActivity.this、myListActivity.class);
startActivityForResult(意图、获取列表项);
}
});
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
if(resultCode==RESULT\u OK){
if(requestCode==获取列表项);
{
字符串getListValue=data.getStringExtra(“值”);
int index=data.getIntExtra(“index”,0);
if(listItemMap.containsKey(String.valueOf(index))){
Toast.makeText(此“此项目已拍摄!!!”,Toast.LENGTH\u LONG.show();
}否则{
listItemMap.put(String.valueOf(index),getListValue);
EditText EditText=新的EditText(本);
editText.setLayoutParams(新的ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_父项,ViewGroup.LayoutParams.WRAP_内容));
setId(索引);
setText(getListValue);
setTag(getListValue);
editText.setFocusable(false);
editText.setFocusableInTouchMode(false);
editText.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
字符串值=v.getTag().toString();
Toast.makeText(MyActivity.this,value,Toast.LENGTH_SHORT).show();
}
});
lnrEdit.addView(编辑文本);
}
}
}
}
}
**抗糜烂活性**
公共类MyListActivity扩展了ListActivity{
私有字符串[]列表数组;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.list_活动);
listArray=新字符串[]{“Android4.1”、“Android4.2”、“Android4.3”、“Android4.4”、“Android4.5”};
setListAdapter(新任务适配器(此为listArray));
}
类TaskAdapter扩展了ArrayAdapter{
私人最终语境;
私有最终字符串[]值;
公共TaskAdapter(上下文上下文,字符串[]值){
super(上下文、R.layout.list_项、值);
this.context=上下文;
这个值=值;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
视窗座;
if(convertView==null){
holder=新的ViewHolder();
convertView=LayoutFlater.from(上下文)。充气(R.layout.list_项,父项,false);
holder.button=(button)convertView.findViewById(R.id.btselect);
holder.textView=(textView)convertView.findViewById(R.id.txtValue);
convertView.setTag(支架);
}否则{
holder=(ViewHolder)convertView.getTag();
}
holder.textView.setText(值[位置]);
holder.button.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//try this way, hope this will help you...
**XML** code
**activity.xml**
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<Button
android:id="@+id/btnAdd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Add"/>
<ScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<LinearLayout
android:id="@+id/lnrEdit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
</ScrollView>
</LinearLayout>
**list_activity.xml**
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
**list_item.xml**
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<TextView
android:id="@+id/txtValue"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Button
android:id="@+id/btnSelect"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Select"/>
</LinearLayout>
**ACTIVITY** code
**MyActivity**
public class MyActivity extends Activity{
private Button btnAdd;
private LinearLayout lnrEdit;
private final int GET_LIST_ITEM = 1;
private HashMap<String,String> listItemMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
btnAdd = (Button) findViewById(R.id.btnAdd);
lnrEdit = (LinearLayout) findViewById(R.id.lnrEdit);
listItemMap = new HashMap<String, String>();
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MyActivity.this,MyListActivty.class);
startActivityForResult(intent,GET_LIST_ITEM);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == RESULT_OK){
if(requestCode == GET_LIST_ITEM);
{
String getListValue = data.getStringExtra("value");
int index = data.getIntExtra("index",0);
if(listItemMap.containsKey(String.valueOf(index))){
Toast.makeText(this,"This item already taken !!!",Toast.LENGTH_LONG).show();
} else{
listItemMap.put(String.valueOf(index),getListValue);
EditText editText = new EditText(this);
editText.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
editText.setId(index);
editText.setText(getListValue);
editText.setTag(getListValue);
editText.setFocusable(false);
editText.setFocusableInTouchMode(false);
editText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String value = v.getTag().toString();
Toast.makeText(MyActivity.this,value,Toast.LENGTH_SHORT).show();
}
});
lnrEdit.addView(editText);
}
}
}
}
}
**MyListActivity**
public class MyListActivty extends ListActivity{
private String[] listArray;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_activity);
listArray = new String[]{"Android4.1","Android4.2","Android4.3","Android4.4","Android4.5"};
setListAdapter(new TaskAdapter(this,listArray));
}
class TaskAdapter extends ArrayAdapter<String> {
private final Context context;
private final String[] values;
public TaskAdapter(Context context, String[] values) {
super(context, R.layout.list_item, values);
this.context = context;
this.values = values;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView==null){
holder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(R.layout.list_item, parent, false);
holder.button = (Button) convertView.findViewById(R.id.btnSelect);
holder.textView = (TextView) convertView.findViewById(R.id.txtValue);
convertView.setTag(holder);
} else{
holder = (ViewHolder)convertView.getTag();
}
holder.textView.setText(values[position]);
holder.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra("index",position);
intent.putExtra("value",values[position]);
setResult(RESULT_OK,intent);
finish();
}
});
return convertView;
}
@Override
public int getCount() {
return values.length;
}
}
static class ViewHolder{
Button button;
TextView textView;
}
}