0

ListView の項目ごとに新しいインテントを作成したいと考えています。しかし、最初に、データ holder.title をログから読み取ることができるかどうかを確認しようとしています。できない。Toast を使用しようとしましたが、makeText() でもエラーが発生します。

コードの何が問題になっていますか? 私は Java プログラマーではありません。これが単純な問題である場合はご容赦ください。

このコードは、 How to parse Sub JSONArray and display image?のソリューションに基づいています。

一部のコードを変更しましたが、コードのこの部分に影響を与えないことを確信しています。

@Override
    public View getView(int position, View convertView, ViewGroup parent) {

        Data item = mObjects.get(position);
        View rowView = convertView;

        if (rowView == null) {
            LayoutInflater inflater = mActivity.getLayoutInflater();
            rowView = inflater.inflate(R.layout.item, parent, false);
            ViewHolder viewHolder = new ViewHolder();
            viewHolder.icon = (ImageView) rowView.findViewById(R.id.image);
            viewHolder.title = (TextView) rowView.findViewById(R.id.title);
            rowView.setTag(viewHolder);
        }

        ViewHolder holder = (ViewHolder) rowView.getTag();

        holder.title.setText(item.getmTitle());



        item.setOnClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {

//Intent to be here. Now I am testing to see if data can be passed but it can't
                Log.e("log_tag","This is being clicked");
            }
        });

        holder.icon.setBackgroundResource(R.drawable.ic_launcher);
        holder.mTask = new DownloadImageTask(item.getmImageUrl(), holder.icon);
        if (!holder.mTask.isCancelled()) {
            holder.mTask.execute();
        }


        return rowView;
    }

編集済み!上記のコードを何時間も試しましたが、絶望的です。そこで、MainActivity クラスを調べます。そして、少なくとも何かが出てきました。リスト項目をクリックすると、「これはクリックされています」と表示されます。しかし、クリックしてもまだ JSON データを表示できません。そして、私はここからどのように意図するのだろうかと思っています。

再編集。

オンラインでより多くのコードを見た後、いくつかのコードを変更しました。そしてまだ立ち往生しています。

mListView = (ListView) findViewById(android.R.id.list);
mAdapter = new Adapter(this, mSource);
mListView.setAdapter(mAdapter);

mListView.setOnItemClickListener(new OnItemClickListener() {

    //private Object title;
    @Override
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {

        @SuppressWarnings("unchecked")
        HashMap<String, String> o = (HashMap<String, String>) mListView.getItemAtPosition(position);  
        //Selected item
        //String product = ((TextView) View).getText().toString();
        Toast.makeText(getApplicationContext(),o.get("title"), Toast.LENGTH_LONG).show();


    }
});
4

1 に答える 1

0

次の手順に従います。

1。gettersメソッドとsettersメソッドのBeanクラスを作成します。

2。ArrayListを作成します。

3。値をBeanクラスに格納します。

4。Beanクラスオブジェクトをarraylistに追加します。

5。次に、リストビューアイテムをクリックして、を使用してBeanクラスオブジェクトを渡しますputExtra

この方向に行ってください。

編集:

Beanクラス:

 public class ActivitiesBean implements Serializable{


/**
 * 
 */
private static final long serialVersionUID = 1L;

public String title;
public String image;
........ 

public String getTitle() {
    return title;
}
public void setTitle(String title) {
    this.title = title;
}
public String getImage() {
    return image;
}
public void setImage(String image) {
    this.image = image;
}

..............


}

Javaクラス:

 ActivitiesBean bean;
ArrayList<Object> listActivities = new ArrayList<Object>();

............................



 public class FetchActivitesTask extends AsyncTask<Void, Void, Void> {

    int i =0;
    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
        super.onPreExecute();
         pgb.setVisibility(View.VISIBLE);
    }

    @Override
    protected Void doInBackground(Void... params) {
        // TODO Auto-generated method stub

         ............

                    Here your JSON code

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


                JSONObject jsonnode = jsonnodes.getJSONObject(i); 

                JSONObject jsonnodevalue = jsonnode.getJSONObject(node);

                bean = new ActivitiesBean();

                bean.title = jsonnodevalue.getString(title);
                bean.image = jsonnodevalue.getString(image_fid);

                                    .....................  


                listActivities.add(bean);


            }               
        }
        catch (JSONException e) {

            e.printStackTrace();
      }

        return null;
    }

    @Override
    public void onPostExecute(Void result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);

        pgb.setVisibility(View.GONE);
        displayAdapter();
    }
}

public void displayAdapter()
{
    adapter = new ActivityAdapter(this, listActivities);
    contests_listView.setAdapter(adapter);
    contests_listView.setOnItemClickListener(new OnItemClickListener() {

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

            bean = (ActivitiesBean) adapter.getItem(position);

            Intent in1 = new Intent(Activites_Activity.this, Activity_display.class);
            in1.putExtra("ActivityObject", bean);
            startActivity(in1);
        }

    });

}
于 2013-02-07T03:55:07.367 に答える