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();
}
});