2017-10-12 43 views
0

我在dailog片段中遇到問題。我想要json數組到dailog片段中,但我不知道如何去做,下面是我正在嘗試的。任何暗示?如何讓json數組進入對話框片段

public class MyAlertSortDialogFragmentIndividual extends DialogFragment { 
public static final String DATA = "items"; 
public static final String SELECTED = "selected"; 
CharSequence[] cs; 
ArrayList<User> transactionList = new ArrayList<>(); 
List <User> users; 
String s; 
@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    users=new ArrayList<>(); 
    Bundle bundle = getArguments(); 
    AlertDialog.Builder dialog = new AlertDialog.Builder(getContext()); 
    dialog.setTitle("Sort By"); 
    dialog.setPositiveButton("Cancel", new PositiveButtonClickListener()); 
    bundle.putSerializable("key", transactionList); 

    String str = bundle.getString("str"); 

    users = new Gson().fromJson(str,ArrayList.class); 


    return dialog.create(); 
} 
class PositiveButtonClickListener implements DialogInterface.OnClickListener { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 

     dialog.dismiss(); 

    } 
} 

DialogInterface.OnClickListener selectItemListener = new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     // process 
     //which means position 

     dialog.dismiss(); 
    } 
}; 

我應該怎麼得到的模型類的數據。

+0

告訴我你的STR值字符串str = bundle.getString( 「STR」) ;這一個 –

+0

users = new Gson()。fromJson(str,ArrayList.class);在這一行中你必須設置在這個str中有實例的類名...................這裏,ArrayList.class錯誤的值 –

+0

也可以在後面的代碼裏發送這個str值到MyAlertSortDialogFragmentIndividual這個片段 –

回答

1
public class NewItem { 

private String name; 
private String age; 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public String getAge() { 
    return age; 
} 

public void setAge(String age) { 
    this.age = age; 
} 
} 

如果這是你的模型類,那麼得到的數據:

String userName,age; 
for (NewItem item : users) { 
     if(item.getName().equals(REQUIRED_USERNAME)){ 
     userName = item.getName(); 
     age = item.getAge(); 
     } 
    } 
+0

您可以創建構造和通數組 – Rajasekhar

+0

的參數我想將json數組列表數據轉換爲單選的對話框片段 – subhash

+0

單選是什麼意思?你的用戶列表將包含所有的用戶名..你必須選擇一個嗎? – Anonymous

0

首先你得到的JSON格式不正確的JSON格式發送JSON格式一樣

{ 
    "Users": [ 
     { 
      "username": "ashish", 
      "userid": "97" 
     } 
    ] 
} 

不喜歡 - 「Users」:[{「username」:「ashish」,「userid」:「97」}]

之後,將其映射到類

public class UsersResponce implements Serializable { 

    @SerializedName("Users") 
    @Expose 
    private List<User> users = null; 

    public List<User> getUsers() { 
     return users; 
    } 

    public void setUsers(List<User> users) { 
     this.users = users; 
    } 

    public class User implements Serializable{ 

     @SerializedName("username") 
     @Expose 
     private String username; 
     @SerializedName("userid") 
     @Expose 
     private String userid; 

     public String getUsername() { 
      return username; 
     } 

     public void setUsername(String username) { 
      this.username = username; 
     } 

     public String getUserid() { 
      return userid; 
     } 

     public void setUserid(String userid) { 
      this.userid = userid; 
     } 

    } 
} 

比傳遞海峽價值並獲得POJO類像

UsersResponce users = new Gson().fromJson(str,UsersResponce.class); 
if(null!=UsersResponce){ 
    List<User> usersList =UsersResponce.getUsers(); 
    if(null!=usersList&&usersList.size()>0){ 
    for (User item : usersList) { 
     if(item.getUserid().equals(CURRENT_LOGIN_USERID)){ 
     //than set your adapter selcted here 
     } 
    } 
    } 
} 

對於單選擇適配器參考此link