java - listview Web 服务对象列表
问题描述
来自 Web 服务的数据不是 json 列表。如何列出传入数据?请帮忙。
//////// JSON 数据 ///////
{
"Sonuc": true,
"Zaman": "2018-11-05T09:39:35.1356004+03:00",
"Veri": [
{
"ID": 1,
"KULADI": "admin"
},
{
"ID": 2,
"KULADI": "kisitli"
}
],
"Hata": null
}
/////// 模型类 ///////
`public class Message {
private int ID;
private String KULADI;
private Boolean Sonuc;
public Message() {
}
public int getId() {
return ID;
}
public void setId(int id) {
this.ID = id;
}
public String getFrom() {
return KULADI;
}
public void setFrom(String from) {
this.KULADI = from;
}
public Boolean Sonuc() {
return Sonuc;
}
public void Sonuc(Boolean Sonuc) {
Sonuc = Sonuc;
}
}` ///////消息适配器 ///////
`public class MessagesAdapter_RetroFit_2 extends RecyclerView.Adapter<MessagesAdapter_RetroFit_2.MyViewHolder> {
private Context mContext;
private List<Message> messages;
private SparseBooleanArray selectedItems;
// array used to perform multiple animation at once
private SparseBooleanArray animationItemsIndex;
private boolean reverseAllAnimations = false;
private static int currentSelectedIndex = -1;
public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnLongClickListener {
public TextView from, subject, message, iconText, timestamp;
public ImageView iconImp, imgProfile;
public LinearLayout messageContainer;
public RelativeLayout iconContainer, iconBack, iconFront;
public MyViewHolder(View view) {
super(view);
from = (TextView) view.findViewById(R.id.from);
view.setOnLongClickListener(this);
}
@Override
public boolean onLongClick(View view) {
view.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);
return true;
}
}
public MessagesAdapter_RetroFit_2(Context mContext, List<Message> messages) {
this.mContext = mContext;
this.messages = messages;
selectedItems = new SparseBooleanArray();
animationItemsIndex = new SparseBooleanArray();
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.message_list_row, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
Message message = messages.get(position);
// displaying text view data
holder.from.setText(message.getFrom());
}
private void resetIconYAxis(View view) {
if (view.getRotationY() != 0) {
view.setRotationY(0);
}
}
@Override
public long getItemId(int position) {
return messages.get(position).getId();
}
@Override
public int getItemCount() {
return messages.size();
}
private void resetCurrentIndex() {
currentSelectedIndex = -1;
}
}
////////MY LİST ///////
公共类 PostActivity 扩展 AppCompatActivity 实现 SwipeRefreshLayout.OnRefreshListener、NavigationView.OnNavigationItemSelectedListener {
private static final String TAG = "PostActivity";
TextView title;
private List<Message> messages = new ArrayList<>();
private RecyclerView recyclerView;
private MessagesAdapter_RetroFit_2 mAdapter;
private SwipeRefreshLayout swipeRefreshLayout;
ApiService service;
TokenManager tokenManager;
Call<Message> call;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.menu_p);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
mAdapter = new MessagesAdapter_RetroFit_2(this, messages);
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
recyclerView.setLayoutManager(mLayoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.addItemDecoration(new DividerItemDecoration(this, LinearLayoutManager.VERTICAL));
swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_layout);
swipeRefreshLayout.setOnRefreshListener(this);
recyclerView.setAdapter(mAdapter);
swipeRefreshLayout.post(
new Runnable() {
@Override
public void run() {
Log.e("keshav", "getInbox onCreate Called...");
getInbox();
}
}
);
tokenManager = TokenManager.getInstance(getSharedPreferences("prefs", MODE_PRIVATE));
service = RetrofitBuilder.createServiceWithAuth(ApiService.class, tokenManager); }
private void getInbox() {
Call<List<Message>> call = service.getInbox("SELECT ID,KULADI FROM TBLKULLANICI");
call.enqueue(new Callback<List<Message>>() {
@Override
public void onResponse(Call<List<Message>> call, Response<List<Message>> response) {
if(response.isSuccessful()){
swipeRefreshLayout.setRefreshing(false);
// clear the inbox
messages.clear();
Log.e("keshav", "response" + response.body());
for (Message message : response.body()) {
messages.add(message);
}
mAdapter.notifyDataSetChanged();
}else {
tokenManager.deleteToken();
startActivity(new Intent(PostActivity.this, LoginActivity.class));
finish();
}
}
@Override
public void onFailure(Call<List<Message>> call, Throwable t) {
Toast.makeText(getApplicationContext(), "Unable to fetch json: " + t.getMessage(), Toast.LENGTH_LONG).show();
}
});
}`