簡體   English   中英

Android工具在列表項上單擊以通過自定義列表適配器將數據傳遞到新的活動

[英]Android implement on list item click to pass data to new Activity via custom list adapter

我是Android開發的新手,我嘗試通過檢查其他示例代碼來進行嘗試,並設法將數據從我的網站提取到自定義列表視圖中,我的主要活動顯示如下:當前主要活動快照 ,我在說明中僅顯示了一些文字,我想要如果我單擊列表項,在我的情況下, jobid將被帶到新的Activity中,即Main2Activity。 我的問題是:我不知道從哪里上的列表項單擊事件實現,我怎么能寫,這樣它可以通過jobid來Main2Activity。 我的完整MainActivity類源代碼如下。

package com.helloworld.kazitz.mnewonluine;

import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

import com.helloworld.kazitz.mnewonluine.models.KaziModel;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private TextView tvData;
    private ListView lvKazi;

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

        lvKazi = (ListView)findViewById(R.id.lvKazi);

        new JSONTask().execute("http://johnapps.ga/kazitz/kazitz.php");
    }


    public class JSONTask extends AsyncTask<String, String, List<KaziModel>> {

        @Override
        protected List<KaziModel> doInBackground(String... params) {

            HttpURLConnection connection = null;
            BufferedReader reader = null;

            try {
                URL url = new URL(params[0]);
                connection = (HttpURLConnection) url.openConnection();
                connection.connect();

                InputStream stream = connection.getInputStream();

                reader = new BufferedReader(new InputStreamReader(stream));

                StringBuffer buffer = new StringBuffer();

                String line = "";
                while((line = reader.readLine()) != null)
                {
                    buffer.append(line);
                }
                String finalJson = buffer.toString();

                JSONObject parentObject = new JSONObject(finalJson);
                JSONArray parentArray = parentObject.getJSONArray("kazitz");

                List<KaziModel> kaziModelList = new ArrayList<>();
                for(int i=0; i<parentArray.length(); i++)
                {
                    JSONObject finalObject = parentArray.getJSONObject(i);
                    KaziModel kaziModel = new KaziModel();
                    kaziModel.setId(finalObject.getInt("id"));
                    kaziModel.setTime(finalObject.getString("time"));
                    kaziModel.setDomain(finalObject.getString("domain"));
                    kaziModel.setTitle(finalObject.getString("title"));
                    kaziModel.setSdesc(finalObject.getString("sdesc"));
                    kaziModelList.add(kaziModel);
                }
                return kaziModelList;


            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (JSONException e) {
                e.printStackTrace();
            } finally{
                if(connection != null) {
                    connection.disconnect();
                }
                try {
                    if(reader != null) {
                        reader.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return null;
        }

        @Override
        protected void onPostExecute(List<KaziModel> result) {
            super.onPostExecute(result);

            KaziAdapter adapter = new KaziAdapter(getApplicationContext(), R.layout.row, result);
            lvKazi.setAdapter(adapter);
            // TODO need to set data to the list
        }
    }



    public class KaziAdapter extends ArrayAdapter{

        private List<KaziModel> kaziModelList;
        private int resource;
        private LayoutInflater inflater;

        public KaziAdapter(Context context, int resource, List<KaziModel> objects) {
            super(context, resource, objects);
            kaziModelList = objects;
            this.resource = resource;

            inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);

        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            final int jobid = kaziModelList.get(position).getId();

            if(convertView == null){
                convertView = inflater.inflate(resource, null);
            }

            TextView tvSource;
            TextView tvDate;
            TextView tvTitle;
            TextView tvExcerpt;

            tvSource = (TextView)convertView.findViewById(R.id.tvSource);
            tvDate = (TextView)convertView.findViewById(R.id.tvDate);
            tvTitle = (TextView)convertView.findViewById(R.id.tvTitle);
            tvExcerpt = (TextView)convertView.findViewById(R.id.tvExcerpt);

            tvSource.setText(kaziModelList.get(position).getDomain());
            tvDate.setText(kaziModelList.get(position).getTime());
            tvTitle.setText(kaziModelList.get(position).getTitle());
            tvExcerpt.setText(kaziModelList.get(position).getSdesc());

            return convertView;
        }
    }




    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_refresh) {
            new JSONTask().execute("http://johnapps.ga/kazitz/kazitz.php");
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

lvKazi=...行之后將其添加到onCreate:

lvKazi.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView parent, View view, int position, long id) {
            //do what you are trying to do here
        }
    });

暫無
暫無

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

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