java - 将 ListView 项目 onclick 解析到另一个 Activity 并匹配 JSON 中的特定数据

标签 java android json listview

任何人都可以帮助我解析单击另一个 Activity 时的 ListView 项目,最好是能够获取解析的 ID 并将其与一些 JSON 数据进行匹配的 Activity 。我正在开发一个 volley 库,并且肯定希望获取所单击的特定项目的相关数据。

        // Called when the activity is first created.
    @Override
    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            LinkedList<String> mLinked = new LinkedList<String>();
            for (int i = 0; i < DRUGS.length; i++) {
                    mLinked.add(DRUGS[i]);
            }

            setListAdapter(new MyListAdaptor(this, mLinked));

            ListView lv = getListView();
            lv.setFastScrollEnabled(true);

            lv.setOnItemClickListener(new OnItemClickListener() {
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                            // When clicked, show a toast with the TextView text
                            Toast.makeText(getApplicationContext(), ((TextView) view).getText(), Toast.LENGTH_SHORT).show();

                            // Start new intent by passing value
                            // End intent
                    }

            });
       }

我需要在另一项 Activity 中看到我的值(value)

public class Activity2_view extends Activity {

//从 MainActivity 类收集值 TextView 电视 View ;

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

    tvView = (TextView) findViewById(R.id.tvView);
    Intent intent = getIntent();

    String ItemName = intent.getStringExtra("jsonId");

    tvView.setText("Your drug name is: "  + ItemName);
}

}

最佳答案

在适配器的 getView() 方法中,您可以设置一个标记来匹配需要链接的 JSON 数据的 ID。例如:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    int jsonId;  // Set the view's tag to the ID of the JSON data
                 // you want to link it to.
    convertView.setTag(jsonId);
}

然后,在您的 OnItemClickListener 中:

ListView lv = getListView();
lv.setFastScrollEnabled(true);

lv.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        // When clicked, show a toast with the TextView text
        Toast.makeText(getApplicationContext(), ((TextView) view).getText(), Toast.LENGTH_SHORT).show();

        // Get the id from the view.
        int jsonId = (int) view.getTag();

        // Start new intent by passing value
        Intent newActivityIntent = new Intent(YourActivity.this, YourNewActivity.class);
        newActivityIntent.putExtra("jsonId", jsonId);

        // Start it.
        startActivity(newActivityIntent);
    }
});

如果您在 getView() 方法中使用 ViewHolder 来进行优化,则 ViewHolder 将是您的 View 的标记。您需要向 ViewHolder 对象添加一个成员属性,您可以用它保存 id。

public class ViewHolder {
    private int mJsonId;
    private TextView mTextView;

    public void setId(int id) {
        mJsonId = id;
    }

    public int getJsonId() {
        return mJsonId;
    }
}

然后

ViewHolder viewHolder = (ViewHolder) view.getTag();
int jsonId = viewHolder.getJsonId();

希望这有帮助。

关于java - 将 ListView 项目 onclick 解析到另一个 Activity 并匹配 JSON 中的特定数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35259632/

相关文章:

java - 尽管连接随后关闭,但 JDBC 结果集和语句是否必须单独关闭?

android - OpencvAndroidSDK : Switching between Front camera and Back camera at run-time?

java - 无法建立Cordova Phonegap项目Android

java - Android 4 标签布局的最佳方式?

java - 如何避免 BitmapFactory.decodeByteArray 出现不一致的 OutOfMemory 异常?

java - "inconsistent state"是什么?

python - 如何使用python删除json对象?

ios - 使用 EVReflection 转换时 Realm 对象为空

C# WebClient 在 POST 请求中上传 JSON

java - 从 Assets 文件夹或 SD 卡访问文件有什么区别