首页 > 解决方案 > 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();
        }
    });
}`

标签: javaandroid

解决方案


推荐阅读