ListView中的按钮用于编辑sqlite数据库条目

时间:2013-12-20 22:06:50

标签: android listview button onclicklistener

我正在尝试链接每个ListView条目的编辑按钮,以编辑与该按钮关联的特定条目。例如,对于填充一行的每个数据库条目,最右边的按钮允许您编辑条目。目前,代码使用onItemClickListener来选择整行本身但我想将其链接到行中的按钮,而不是必须选择整行。

这是我的MainActivity.java代码:

package com.example.project_input;

import java.util.ArrayList;
import java.util.HashMap;
import android.os.Bundle;
import android.app.ListActivity;
import android.content.Intent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListAdapter;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.ListView;



public class MainActivity extends ListActivity {

Intent intent;
TextView projectId;
DBController controller = new DBController(this);


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ArrayList<HashMap<String, String>> projectList =  controller.getAllProjects();
    if(projectList.size()!=0) {
        ListView lv = getListView();
        lv.setOnItemClickListener(new OnItemClickListener() {
            @Override 
              public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
                  projectId = (TextView) view.findViewById(R.id.projectId);
                  String valProjectId = projectId.getText().toString();                   
                  Intent  objIndent = new Intent(getApplicationContext(),EditProject.class);
                  objIndent.putExtra("projectId", valProjectId); 
                  startActivity(objIndent); 
              }
        }); 
        ListAdapter adapter = new SimpleAdapter( MainActivity.this,projectList, R.layout.view_project_entry, new String[] { "projectId","projectName", "projectLocation"}, new int[] {R.id.projectId, R.id.projectName, R.id.projectLocation}); 
        setListAdapter(adapter);
    }
}

public void showAddForm(View view) {
    Intent objIntent = new Intent(getApplicationContext(), NewProject.class);
    startActivity(objIntent);
}
}

按钮的布局xml如下:

                <Button
            android:id="@+id/edit_button"
            android:focusable="false"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_toLeftOf="@+id/add_details"
            android:paddingRight=" 10dp"
            android:text="Edit" />

对此的任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:0)

要在Button可点击的行中设置ListView,您需要在onClickListener本身设置Button。由于行项目Button不是Android附带的内容,因此您需要使用Button创建自己的行。最简单的方法是为您的行创建.xml,对其进行充气并获取getView() Adapter中按钮的引用。