我在警报对话框微调器中得到json响应,现在我希望用户在Edittext中用逗号分隔用户选择的项目,但是当我运行该应用程序时,我只能选择一个并且在我的edittext中它仅显示一项…
public class MainActivity extends Activity {
JSONParser jsonParser = new JSONParser();
JSONArray country_list=null;
private static String BUSINESS_URL = "";
private static final String BUSINESS_ID="id";
private static final String BUSINESS_NAME="name";
ArrayList<HashMap<String,String>> data;
private TextView splang;
private String cname;
private String business_id;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
splang=(TextView)findViewById(R.id.txtvw);
new LoadBusiness().execute();
}
class LoadBusiness extends AsyncTask<String, String, ArrayList<HashMap<String,String>>> {
ArrayAdapter<String> adaptercountry ;
private ProgressDialog pDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(MainActivity.this);
pDialog.setMessage("Loading...");
pDialog.setIndeterminate(false);
// pDialog.setIndeterminateDrawable(getResources().getDrawable(R.drawable.custom_progress));
pDialog.setCancelable(true);
pDialog.show();
}
protected ArrayList<HashMap<String,String>> doInBackground(String... args) {
ServiceHandler sh = new ServiceHandler();
// Making a request to url and getting response
data = new ArrayList<HashMap<String, String>>();
String jsonStr = sh.makeServiceCall(BUSINESS_URL, ServiceHandler.GET);
Log.d("Response: ", "> " + jsonStr);
if (jsonStr != null) {
try {
country_list = new JSONArray(jsonStr);
// looping through All Contacts
for (int i = 0; i < country_list.length(); i++) {
JSONObject c = country_list.getJSONObject(i);
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
// adding each child node to HashMap key => value
map.put(BUSINESS_ID, c.getString(BUSINESS_ID));
map.put(BUSINESS_NAME,c.getString(BUSINESS_NAME));
data.add(map);
}
} catch (JSONException e) {
e.printStackTrace();
}
} else {
Log.e("ServiceHandler", "Couldn't get any data from the url");
}
return data;
}
protected void onPostExecute(ArrayList<HashMap<String,String>> result) {
super.onPostExecute(result);
pDialog.dismiss();
String[] arrConuntry=new String[data.size()];
for(int index=0;index<data.size();index++){
HashMap<String, String> map=data.get(index);
arrConuntry[index]=map.get(BUSINESS_NAME);
}
// pass arrConuntry array to ArrayAdapter<String> constroctor :
adaptercountry = new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_list_item_multiple_choice,
arrConuntry);
splang.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View w) {
new AlertDialog.Builder(MainActivity.this)
.setTitle("Select")
.setAdapter(adaptercountry, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
splang.setText(adaptercountry.getItem(which).toString());
try {
cname=country_list.getJSONObject(which).getString("id");
Log.d("Response: ", "> " + cname);
business_id=cname.toString();
System.out.println("Business_id"+business_id);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
dialog.dismiss();
}
}).create().show();
}
});
}
}
定义自定义界面,该界面从多个项目选择对话框中进行回调。
public interface MultipleItemSelectListener {
public void onSelected(String value,String ids);
}
自定义多项选择对话框方法。
参量
内容 :您的活动内容参考。
title :对话框标题。
jsonArrayString :您的jsonarray响应作为字符串。
MultipleItemSelectListener :对选定项的侦听 器进行 自定义。
public void getMultiSelectionDialog(final Context context,final String title, String jsonString, final String value, final MultipleItemSelectListener target) {
final ArrayList<String> values = new ArrayList<String>();
final ArrayList<String> ids = new ArrayList<String>();
final String BUSINESS_ID="id";
final String BUSINESS_NAME="name";
try {
JSONArray jsonArray = new JSONArray(jsonString);
int size = jsonArray.length();
for (int i = 0; i < size; i++) {
values.add(((JSONObject) jsonArray.get(i)).getString(BUSINESS_NAME).trim());
ids.add(((JSONObject) jsonArray.get(i)).getString(BUSINESS_ID).trim());
}
} catch (JSONException e) {
e.printStackTrace();
}
final boolean[] selections = new boolean[values.size()];
final StringBuilder newValue = new StringBuilder();
final StringBuilder newIds = new StringBuilder();
AlertDialog alert = null;
if (value.length() > 0) {
String[] oldValue = value.split(",");
int size = values.size();
for (int i = 0; i < size; i++) {
int len = oldValue.length;
for (int j = 0; j < len; j++) {
if (values.get(i).trim().equalsIgnoreCase(oldValue[j].trim())) {
selections[i] = true;
break;
}
}
}
}
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(title);
builder.setMultiChoiceItems(values.toArray(new CharSequence[values.size()]), selections, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
selections[which] = isChecked;
}
});
builder.setPositiveButton("Done", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
int size = selections.length;
for (int i = 0; i < size; i++) {
if (selections[i]) {
newValue.append(newValue.length() > 0 ? "," + values.get(i) : values.get(i));
newIds.append(newIds.length() > 0 ? "," + ids.get(i) : ids.get(i));
}
}
target.onSelected(newValue.toString(),newIds.toString());
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
int size = selections.length;
for (int i = 0; i < size; i++) {
if (selections[i]) {
newIds.append(newIds.length() > 0 ? "," + ids.get(i) : ids.get(i));
}
}
target.onSelected(value,newIds.toString());
}
});
alert = builder.create();
alert.show();
}
如何获取MultiSelectionDialog:
class LoadBusiness extends AsyncTask<Void,Void,String> {
Context context;
public LoadBusiness(Context context){
this.context=context;
}
private ProgressDialog pDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(context);
pDialog.setMessage("Loading...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected String doInBackground(Void... params) {
ServiceHandler sh = new ServiceHandler();
String jsonStr = sh.makeServiceCall(BUSINESS_URL, ServiceHandler.GET);
Log.d("Response: ", "> " + jsonStr);
return jsonStr;
}
protected void onPostExecute(String result) {
super.onPostExecute(result);
pDialog.dismiss();
setTextViewWithMultipleSelectionDialog(context,result);
}
}
public void setTextViewWithMultipleSelectionDialog(final Context context,final String jsonArrayString){
splang.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getMultiSelectionDialog(context,"Countries",jsonArrayString,splang.getText().toString(),new MultipleItemSelectListener() {
@Override
public void onSelected(String value) {
splang.setText(value);
}
});
}
});
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
splang=(TextView)findViewById(R.id.txtvw);
new LoadBusiness(this).execute();
}
问题内容: 我正在使用NetBeans 7.1在Java中进行编码。我有一个上面带有整数值的微调器,我想知道如何在微调器中获得活动值,这是指用户在程序运行时选择的那个值。在其他方法上使用它。 问题答案: 应该可以。您可以将其投射到,例如 从注reggoodwin:你也应该调用调用之前,以确保与被传播到模型编辑器中手动输入值,否则你将只能得到旧值。 因此,它应该像下面这样,
我想制作一个简单的共享按钮来获取TextView值并共享它,但我不知道怎么做。 代码如下: 而相关的布局是: 我在这里看了文档和一些类似的问题,但找不到我的答案。感谢你对此的帮助。
如何得到TextView的一个活动在RecycleViewAdapter类和TextView不在布局行对于RecycleViewitem.As在RecycleViewAdapter我们覆盖方法 因为它只得到<code>中声明的那些,ViewHolder扩展了RecyclerView。ViewHolder和ViewHolder将仅获取<code>视图中的ui v=充气机。充气(R.layout.ne
问题内容: 我正在尝试从中获取选定的项目字符串。到目前为止,我已经得到了: 这是行不通的,并提供了一个类强制转换异常(我想我可以将a强制转换为继承它的小部件。显然不行!)那么,如何获得选定的a值呢? 问题答案: 要获得微调器的选定值,您可以按照以下示例操作。 创建一个实现AdapterView.OnItemSelectedListener的嵌套类。这将提供一个回调方法,当从微调器中选择一个项目时,
在我的应用程序中,我需要获取微调器的值。例如,我有一个用string-array (strings.xml)填充的微调器“city ”,用户在微调器中选择一个值,例如“faade du poste extérieur ”,我必须以与“faade du poste extérieur”值链接的id形式检索微调器的值。 例如,当用户选择“Façade du poste extérieur”时,如何检索
大家好,我得到了一个代码,我为我的项目,代码是得到心跳传感器的值从Arduino到我的android手机使用蓝牙。到目前为止,它进行得很好,它可以毫无问题地将价值发送到我的应用程序。但现在的问题是,我想得到它的值,这样我就可以用我的算法来处理它,但我现在似乎陷入了困境。