我在 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/