gpt4 book ai didi

java - onItemSelectedListener 不使用数据库中的长字符串数组触发

转载 作者:行者123 更新时间:2023-12-01 18:48:30 26 4
gpt4 key购买 nike

更新:

我发现了这个问题,这个问题可能是由从SQL请求集中获取适配器内容引起的。现在我在这里发布我的 getLockerList() 代码。

我用长字符串测试了该函数

"asdajdnajkdaadasdaajd najkdaadasdaajdnajkdaadasdaajdnajkdaadasdaajdnaj kdaadasdaajdnajkdaadasdasdas"

而且它仍然可以完美工作,所以现在我猜问题出在我获取数据时。

我用 arrayadapter 设置了一个微调器。适配器的内容来自MySQL请求。

我成功获取了数据并创建了适配器,但是当我尝试显示用户选择的项目时,单击该项目后它什么也不显示。

我尝试添加一些系统打印来找出问题,最后我发现问题是监听器甚至没有调用,无论onItemSelected还是onNothingSelected

我想我现在可能发现问题了,我的 View 列表存储在不同的位置,这是很长的字符串。我尝试将适配器的内容更改为“测试”,它工作得很好。那么现在的问题是现在我可以显示长字符串吗?

这是我的代码:

public class PlaceOrderActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
private Spinner from_spinner;
private ArrayList<String> locker_list = new ArrayList<String>();

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

from_spinner = (Spinner) findViewById(R.id.from_spinner);
from_spinner.setVisibility(View.VISIBLE);
ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item,locker_list);
from_spinner.setAdapter(adapter);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
from_spinner.setOnItemSelectedListener(this);
}

private void getLockerList() {
// Response received from the server
Response.Listener<String> responseListener = new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONArray jsonResponse = new JSONArray(response);
//JSONObject jsonObject = jsonResponse.getJSONObject(0);
if (jsonResponse!=null) {
// System.out.println(jsonResponse);
for (int i=0;i< jsonResponse.length();i++)
{
JSONObject jsonObject = jsonResponse.getJSONObject(i);
String location = jsonObject.getString("location1")+" "+jsonObject.getString("location2")+" "+jsonObject.getString("location3");
locker_list.add(location);
}
} else {
}

} catch (JSONException e) {
e.printStackTrace();
}
}
};
Response.ErrorListener errorListener = new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
System.out.println(error);
}
};
getLoockerLocationRequest request = new getLoockerLocationRequest(responseListener,errorListener);
RequestQueue queue = Volley.newRequestQueue(PlaceOrderActivity.this);
queue.add(request);
}

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
System.out.println("selected item");
Toast.makeText(parent.getContext(),from_spinner.getSelectedItem().toString(),
Toast.LENGTH_SHORT).show();
}


@Override
public void onNothingSelected(AdapterView<?> parent) {
System.out.println("nothing select");
String no_selected_value = "Select the location";
Toast.makeText(parent.getContext(),no_selected_value,
Toast.LENGTH_SHORT).show();
}

}

最佳答案

我解决了这个问题。

我不知道它是什么概念。但是,如果我向数组列表添加一个额外的项目,无论该项目是“”(只是空白/里面什么都没有)还是“@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@"

程序将变得可以完美运行。

因此,我只需在适配器创建之前添加一个 locker_list.add("");

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_place_order);
locker_list.add("");
getLockerList();
from_spinner = (Spinner) findViewById(R.id.from_spinner);
from_spinner.setVisibility(View.VISIBLE);
ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item,locker_list);
from_spinner.setAdapter(adapter);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
from_spinner.setOnItemSelectedListener(this);
}

关于java - onItemSelectedListener 不使用数据库中的长字符串数组触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59773789/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com