简体   繁体   中英

error buttons on click listener

I retrieve information of student from data base (student number and id and name) with delete buttons so if user click in delete it will display toast message with student id for each button in list.

But I run the code and click in delete button nothing happened, no error in log cat no error in console. What am I missing and why this happening? Also I try to display this message in log cat and nothing happened.

this is my code:

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 

        } 


    }
}

and the xml for manage

<?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>

list student 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>

Please Try replacing the following line in your code:

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

with

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

@sara you cant give the implementation of onclick event in onItemClick event you should put this code:

 delete.setOnClickListener(new View.OnClickListener()

                {

                    public void onClick(View v) {

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

in your adapter's getView method then it will work.coz you are doing here is that you are applying listener to delete button on item click so it wont work coz it always apply the listener and ur listener's method never get called!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM