0

我使用删除按钮从数据库中检索学生的信息(学生编号和 ID 和姓名),因此如果用户单击删除,它将显示列表中每个按钮的带有学生 ID 的 toast 消息。

但是我运行代码并单击删除按钮没有任何反应,日志中没有错误 cat 控制台中没有错误。我错过了什么,为什么会这样?我也尝试在 log cat 中显示此消息,但什么也没发生。

这是我的代码:

public class ManageSection extends ListActivity {
//ProgresogressDialog pDialog;
    private ProgressDialog pDialog;
    // Creating JSON Parser object
// Creating JSON Parser object
JSONParser jParser = new JSONParser(); //class
boolean x =true; 
Button delete;

ArrayList<HashMap<String, String>> studentList;

//url to get all products list
private static String url_all_student = "http://10.0.2.2/SmsPhp/view_student_info.php";
String cl;
// JSON Node names
private static final String TAG_SUCCESS = "success";
private static final String TAG_student = "student";
private static final String TAG_StudentID = "StudentID";
private static final String TAG_StudentNo = "StudentNo";
private static final String TAG_FullName = "FullName";
private static final String  TAG_Avatar="Avatar";
HashMap<String, String> selected_student;
// course JSONArray
JSONArray student = null;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.manage_section);


        studentList = new ArrayList<HashMap<String, String>>();


        ListView list1 = getListView();
        list1.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int pos, long l) {

                 selected_student =studentList.get(pos); //member of your activity.
                 delete =(Button)findViewById(R.id.DeleteStudent);
                 cl=selected_student.get(TAG_StudentID);
                Log.d("id: ",cl);
                 delete.setOnClickListener(new View.OnClickListener()

                    {

                        public void onClick(View v) {

                            Log.d("id: ",cl);
                            Toast.makeText(getBaseContext(),cl,Toast.LENGTH_LONG).show();
                        }
                 });
            }

        });


        new LoadAllstudent().execute();


    }


    /**
     * Background Async Task to Load all student by making HTTP Request
     * */
    class LoadAllstudent extends AsyncTask<String, String, String>
    {

        /**
         * Before starting background thread Show Progress Dialog
         * */
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(ManageSection.this);
            pDialog.setMessage("Loading student. Please wait...");
            pDialog.setIndeterminate(false);
                  }




        /**
         * getting All student from u r l
         * */
        @Override
        protected String doInBackground(String... args) {
            // Building Parameters
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            // getting JSON string from URL
            JSONObject json = jParser.makeHttpRequest(url_all_student, "GET", params);

            // Check your log cat for JSON response
            Log.d("All student : ", json.toString());

            try {
                // Checking for SUCCESS TAG
                int success = json.getInt(TAG_SUCCESS);

                if (success == 1)
                {
                    // student found
                    // Getting Array of course
                    student = json.getJSONArray(TAG_student);

                    // looping through All courses
                    for (int i = 0; i < student.length(); i++)//course JSONArray
                    {
                        JSONObject c = student.getJSONObject(i); // read first

                        // Storing each json item in variable
                        String StudentID = c.getString(TAG_StudentID);
                        String StudentNo = c.getString(TAG_StudentNo);
                        String FullName = c.getString(TAG_FullName);
                     //   String Avatar = c.getString(TAG_Avatar);
                        // creating new HashMap
                        HashMap<String, String> map = new HashMap<String, String>();

                        // adding each child node to HashMap key => value
                        map.put(TAG_StudentID, StudentID);
                        map.put(TAG_StudentNo, StudentNo);
                        map.put(TAG_FullName, FullName);

                        // adding HashList to ArrayList
                        studentList.add(map);
                    }
                } else {
                    x=false;

                }

            } catch (JSONException e) {
                e.printStackTrace();
            }

            return null;
        }   

        /**
         * After completing background task Dismiss the progress dialog
         * **/
        protected void onPostExecute(String file_url) { 
              // dismiss the dialog after getting all products 
              pDialog.dismiss(); 
              if (x==false)
                Toast.makeText(getBaseContext(),"no student" ,Toast.LENGTH_LONG).show();

              ListAdapter adapter = new SimpleAdapter( 
                      ManageSection.this,  studentList, 
                        R.layout.list_student, new String[] { TAG_StudentID, 
                              TAG_StudentNo,TAG_FullName}, 
                        new int[] { R.id.StudentID, R.id.StudentNo,R.id.FullName}); 
               setListAdapter(adapter); 

             // Updating parsed JSON data into ListView 

        } 


    }
}

和用于管理的 xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/bg_all_1" >

    <!-- HEADER -->

    <include
        android:id="@+id/top_header"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginTop="90dp"
        layout="@layout/layout_header" />

    <!-- FOOTER -->


    <!-- MAIN PART -->

    <RelativeLayout
        android:id="@+id/sub_content_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/top_header"
        android:orientation="vertical" >
<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
        <ListView
            android:id="@android:id/list"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
             android:layout_marginLeft="50dp"
              android:gravity="left"
            android:layout_marginTop="10dp" >
        </ListView>
         </ScrollView>
    </RelativeLayout>

    <LinearLayout
        android:id="@+id/bottom_menu"
        android:layout_width="wrap_content"
        android:layout_height="80dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_marginBottom="38dp"
        android:orientation="vertical" >

        <include
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            layout="@layout/layout_footer" />
    </LinearLayout>

</RelativeLayout>

列出学生 xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <!-- Student id (CourseID) - will be HIDDEN - used to pass to other activity -->
    <TextView
        android:id="@+id/StudentID"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:visibility="gone"
         />
    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
      />

    <!-- Name Label -->
    <TextView
        android:id="@+id/FullName"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingTop="6dip"
        android:paddingLeft="6dip"
        android:textSize="8dip"
        android:textStyle="bold" />


        <TextView
            android:id="@+id/StudentNo"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:paddingLeft="6dip"
            android:paddingTop="6dip"
            android:textSize="8dip"
            android:textStyle="bold" />


        <Button
            android:id="@+id/DeleteStudent"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:minHeight="10dip"
            android:minWidth="50dip"
            android:text="@string/deleteStudent"
            android:textSize="8dp"
            android:width="30dp" 

            >

      </Button>



              <Button
                  android:id="@+id/Alert"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:minHeight="10dip"
                  android:minWidth="50dip"
                  android:text="@string/Alert"
                  android:textSize="8dp"
                  android:width="30dp" >

      </Button>
      <RadioGroup 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">


       <RadioButton
           android:id="@+id/radio_pirates"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:onClick="onRadioButtonClicked"
           android:text="@string/attendance"
           android:textSize="8dp"

            />

       </RadioGroup>

</LinearLayout>
4

2 回答 2

0

@sara,您不能在 onItemClick 事件中提供 onclick 事件的实现,您应该输入以下代码:

 delete.setOnClickListener(new View.OnClickListener()

                {

                    public void onClick(View v) {

                        Log.d("id: ",cl);
                        Toast.makeText(getBaseContext(),cl,Toast.LENGTH_LONG).show();
                    }
             });
        }

在您的适配器的 getView 方法中然后它将起作用。因为您在这里所做的是您正在应用侦听器来删除项目单击上的按钮,因此它不会起作用,因为它总是应用侦听器并且您的侦听器的方法永远不会被调用!

于 2012-10-19T04:33:12.290 回答
0

请尝试替换代码中的以下行:

delete =(Button)findViewById(R.id.DeleteStudent);

delete =(Button)view.findViewById(R.id.DeleteStudent);
于 2012-10-10T07:05:19.257 回答