簡體   English   中英

如何將從服務器獲取的listview項的ID傳遞給另一個活動onclick?

[英]How do I pass id of listview item I got from server to another activity onclick?

我通過一些聯機幫助從服務器成功將數據獲取到列表視圖。 我要去的另一個活動是獲取列表視圖項的“ id”並顯示它。

我一直在努力解決這個問題,但沒有成功。

我的mainactivity.java文件

public class MainActivity extends AppCompatActivity {

ListView listView;

Button button;

// Server Http URL
String HTTP_URL = "http://192.168.100.48/listview/index.php";

// String to hold complete JSON response object.
String FinalJSonObject ;

ProgressBar progressBar;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Assign ID's to ListView.
    listView = (ListView) findViewById(R.id.listView1);

    button = (Button)findViewById(R.id.button);

    progressBar = (ProgressBar)findViewById(R.id.ProgressBar1);

    // Adding click listener to button.
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            //Showing progress bar just after button click.
            progressBar.setVisibility(View.VISIBLE);

            // Creating StringRequest and set the JSON server URL in here.
            StringRequest stringRequest = new StringRequest(HTTP_URL,
                    new Response.Listener<String>() {
                        @Override
                        public void onResponse(String response) {

                            // After done Loading store JSON response in FinalJSonObject string variable.
                            FinalJSonObject = response ;

                            // Calling method to parse JSON object.
                            new ParseJSonDataClass(MainActivity.this).execute();

                        }
                    },
                    new Response.ErrorListener() {
                        @Override
                        public void onErrorResponse(VolleyError error) {

                            // Showing error message if something goes wrong.
                            Toast.makeText(MainActivity.this,error.getMessage(),Toast.LENGTH_LONG).show();

                        }
                    });

            // Creating String Request Object.
            RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);

            // Passing String request into RequestQueue.
            requestQueue.add(stringRequest);

        }
    });
}

// Creating method to parse JSON object.
private class ParseJSonDataClass extends AsyncTask<Void, Void, Void> {

    public Context context;

    // Creating List of Subject class.
    List<Subject> CustomSubjectNamesList;

    public ParseJSonDataClass(Context context) {

        this.context = context;
    }

    @Override
    protected void onPreExecute() {

        super.onPreExecute();
    }

    @Override
    protected Void doInBackground(Void... arg0) {

        try {

            // Checking whether FinalJSonObject is not equals to null.
            if (FinalJSonObject != null) {

                // Creating and setting up JSON array as null.
                JSONArray jsonArray = null;
                try {

                    // Adding JSON response object into JSON array.
                    jsonArray = new JSONArray(FinalJSonObject);

                    // Creating JSON Object.
                    JSONObject jsonObject;

                    // Creating Subject class object.
                    Subject subject;

                    // Defining CustomSubjectNamesList AS Array List.
                    CustomSubjectNamesList = new ArrayList<Subject>();

                    for (int i = 0; i < jsonArray.length(); i++) {

                        subject = new Subject();

                        jsonObject = jsonArray.getJSONObject(i);

                        //Storing ID into subject list.
                        subject.Subject_ID = jsonObject.getString("id");

                        //Storing Subject name in subject list.
                        subject.Subject_Name = jsonObject.getString("subject_Name");

                        // Adding subject list object into CustomSubjectNamesList.
                        CustomSubjectNamesList.add(subject);



                    }
                } catch (JSONException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void result)

    {
        // After all done loading set complete CustomSubjectNamesList with application context to ListView adapter.
        ListViewAdapter adapter = new ListViewAdapter(CustomSubjectNamesList, context);

        // Setting up all data into ListView.
        listView.setAdapter(adapter);

        // Hiding progress bar after all JSON loading done.
        progressBar.setVisibility(View.GONE);

    }
}

}

我的Listviewadapter.java文件

public class ListViewAdapter extends BaseAdapter
{
Context context;

List<Subject> TempSubjectList;

public ListViewAdapter(List<Subject> listValue, Context context)
{
    this.context = context;
    this.TempSubjectList = listValue;
}

@Override
public int getCount()
{
    return this.TempSubjectList.size();
}

@Override
public Object getItem(int position)
{
    return this.TempSubjectList.get(position);
}

@Override
public long getItemId(int position)
{
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent)
{
    ViewItem viewItem = null;

    if(convertView == null)
    {
        viewItem = new ViewItem();

        LayoutInflater layoutInfiater = (LayoutInflater)this.context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);

        convertView = layoutInfiater.inflate(R.layout.listview_items, null);

        viewItem.IdTextView = (TextView)convertView.findViewById(R.id.textviewID);

        viewItem.NameTextView = (TextView)convertView.findViewById(R.id.textviewSubjectName);

        convertView.setTag(viewItem);
    }
    else
    {
        viewItem = (ViewItem) convertView.getTag();
    }

    viewItem.IdTextView.setText(TempSubjectList.get(position).Subject_ID);

    viewItem.NameTextView.setText(TempSubjectList.get(position).Subject_Name);

    return convertView;
}
}
class ViewItem    {
  TextView IdTextView;
  TextView NameTextView;
 }

當然,我的subject.java文件

public class Subject {

public String Subject_ID;
public String Subject_Name;

}

IMAGE-它成功顯示服務器中的數據。 但是當我單擊該項目時,我還沒有弄清楚該如何做。

是的,這就是我的睡眠與安寧。

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1,
                                int position, long id) {

        Intent intent = new Intent(MainActivity.this, AnotherActivity.class);
        intent.putExtra("ID",CustomSubjectNamesList.get(position).Subject_ID);
        startActivity(intent);
    }
});

並從另一個活動

首先,使用getIntent()方法獲取啟動活動的意圖:

Intent intent = getIntent();

如果多余的數據用字符串表示,則可以使用intent.getStringExtra(String name)方法。 在您的情況下:

Intent intent = getIntent();
String id = intent.getStringExtra("ID");

您可以使用intent.putExtra()將字符串或整數或僅將實現Serializable實現的任何對象發送到另一個活動

listView.setOnItemClickListener(new AdapaterView.OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1,
           int position, long id) {

        Intent intent = new Intent(MainActivity.this, AnotherActivity.class);
        intent.putExtra("id",CustomSubjectNamesList.get(position).Subject_ID;
        startActivity(intent);
    }
});

在您的新活動中,您將收到剛剛使用getIntent.getIntExtra("id")getIntent.getStringExtra() 或根據您發送的內容使用其他方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM