android - 单击 Android Studio 时如何从项目 ListView 中获取值?

标签 android android-studio

我在 Android 应用程序开发方面还比较陌生。运行一段时间后,当我的程序自动切换到 Activity 时出现问题,当我单击 ListView 中的项目时该 Activity 成为启动器。

具体怎么做才对呢?

我使用从服务器获取的 JSON。

我打算从 ListView 中的项目中检索数据并将其放入另一个 Activity 中的 edittext 中。

Activity 一

public class OneActivity extends AppCompatActivity {
    private LKamarAdapter lKamarAdapter;
    @BindView(R.id.lv)
    ListView lv;

    BaseApiService mApiService;
    Context mContext;
    ArrayList<ModelListView> modelListViewArrayList = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_one);
        ButterKnife.bind(this);
        mContext = this;
        mApiService = UtilsApi.getAPIService();
        getJSONResponse();
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                String nama = modelListViewArrayList.get(i).getNama();

                Intent intent = new Intent(mContext, TwoActivity.class);
                intent.putExtra("nama",nama);
                startActivity(intent);
            }
        });
    }

    private void getJSONResponse() {
        Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(BaseApiService.JSONURL)
            .addConverterFactory(ScalarsConverterFactory.create())
            .build();

        BaseApiService api = retrofit.create(BaseApiService.class);

        Call<String> call = api.getOne();

        call.enqueue(new Callback<String>() {
            @Override
            public void onResponse(Call<String> call, Response<String> response) {
                Log.i("Responsestring", response.body());
                if (response.isSuccessful()) {
                    if (response.body() != null) {
                        Log.i("onSuccess",response.body());
                        String jsonresponse = response.body();
                        writeListView(jsonresponse);
                    } else {
                        Log.i("onEmptyResponse", "Returned empty response");
                    }
                }
            }
            @Override
            public void onFailure(Call<String> call, Throwable t) {

            }
        });
    }

    private void writeListView(String response) {
        try {
            JSONObject obj = new JSONObject(response);
            if(obj.optString("pesan").equals("berhasil")) {
                ArrayList<ModelListView> modelListViewArrayList = new ArrayList<>();
                JSONArray dataArray = obj.getJSONArray("kamar");

                for (int j = 0; j < dataArray.length(); j++) {
                    ModelListView modelListView = new ModelListView();
                    JSONObject dataobj = dataArray.getJSONObject(j);
                    modelListView.setNama(dataobj.getString("nama"));
                    modelListViewArrayList.add(modelListView);
                }

                lKamarAdapter = new LKamarAdapter(this, modelListViewArrayList);
                lv.setAdapter(lKamarAdapter);
            } else {
                Toast.makeText(mContext, obj.optString("listkamar")+"", Toast.LENGTH_SHORT).show();
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
}

Activity 二

public class TwoActivity extends AppCompatActivity {
    @BindView(R.id.etNama)
    EditText etNama;

    String nama;

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

        ButterKnife.bind(this);

        nama = getIntent().getStringExtra("nama");
        etNama.setText(nama);
    }

最佳答案

代替 String nama = modelListViewArrayList.get(i).getNama();

试试这个 String nama = ((ModelListView) lv.getAdapter().getItem(i)).getNama();

关于android - 单击 Android Studio 时如何从项目 ListView 中获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57027143/

相关文章:

Android 任务亲和说明

android - 无法保存快照 AVD

java - 无法在 Android Studio 中查看所有 .jar 代码

android - 如何在 Android Studio 中显示支持库的文档?

java - 如何使从ListView页中选择一个项目并在下一页/Activity 中以文本显示所选项目成为可能?

android - 致命信号 11 (SIGSEGV),代码 1,tid 31051 中的故障地址 0x9

android - 编译phonegap应用问题

android - Firefox android 附加组件 intent startActivity 回调

android - 在执行测试之前,如何要求gradlew卸载应用程序?

java - 找不到带有 ADT 插件的 Eclipse 的 Android SDK