1つのフラグメントを作成しました。ネットワーク接続用にRetrofitを使用してリストビューを作成して、リクエストを取得してリストビューを作成するカスタムアダプタを作成しました:私のリストビューアンドロイドスタジオで何らかの遅延ロードを行う方法
public class TransactionsAdapter extends BaseAdapter {
ArrayList<Transactions> transactions;
public TransactionsAdapter(ArrayList<Transactions> transactions) {
this.transactions=transactions;
}
@Override
public int getCount() {
if (transactions.size()<20) {
return transactions.size();
}else return 20;
}
@Override
public Object getItem(int position) {
return transactions.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view=null;
ViewHolder viewHolder = null;
if(convertView == null)
{
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.izvjestaji_item,parent,false);
viewHolder = new ViewHolder(view);
view.setTag(viewHolder);
}
else{
view = convertView;
viewHolder= (ViewHolder) view.getTag();
}
Transactions transactions = (Transactions) getItem(position);
if(transactions != null) {
viewHolder.datum.setText(transactions.getShortDate());
viewHolder.partner.setText(transactions.getMerchantName());
String doublestring=Double.toString(transactions.getTransactionPointsAmount());
String doublestring1=Double.toString(transactions.getSalesAmount());
viewHolder.iznos.setText(doublestring1);
viewHolder.brojbodova.setText(doublestring);
}
return view;
}
private class ViewHolder{
TextView datum;
TextView partner;
TextView iznos;
TextView brojbodova;
public ViewHolder(View view) {
this.datum = (TextView) view.findViewById(R.id.izvjestaji_datum);
this.partner = (TextView) view.findViewById(R.id.izvjestaji_partner);
this.iznos = (TextView) view.findViewById(R.id.izvjestaji_iznos);
this.brojbodova=(TextView)view.findViewById(R.id.izvjestaji_brojbodova);
}
}
}
私はアイテムとリストビューの2つのレイアウトを作成しました。サーバーが大量のデータを返す可能性があるため、ネットワークの効率を上げるために、20〜20のように表示したいので、何らかの遅延ロードなどを追加する必要があります。 これは私のフラグメントのコードです:
public class Izvjestaji extends Fragment {
// The onCreateView method is called when Fragment should create its View
object hierarchy,
// either dynamically or via XML layout inflation.
ListView list;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle
savedInstanceState) {
// Defines the xml file for the fragment
return inflater.inflate(R.layout.izvjestaji, parent, false);
}
// This event is triggered soon after onCreateView().
// Any view setup should occur here. E.g., view lookups and attaching view
listeners.
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
list=(ListView)view.findViewById(R.id.izvjestaji_list);
showList();
// Setup any handles to view objects here
// EditText etFoo = (EditText) view.findViewById(R.id.etFoo);
}
public void showList(){
NetworkSDK.getInstance().getTransactions(new
Callback<List<Transactions>>() {
@Override
public void onResponse(Call<List<Transactions>> call,
Response<List<Transactions>> response) {
if(response.isSuccess()){
Log.d("Data", String.valueOf(response.isSuccess()));
TransactionsAdapter transactionsAdapter=new
TransactionsAdapter((ArrayList<Transactions>)response.body());
list.setAdapter(transactionsAdapter);
}
}
@Override
public void onFailure(Call<List<Transactions>> call, Throwable t) {
Log.d("Error","Def error");
}
});
}
}
これは改造のNetwork SDKからの私のコール、このすべてから
public void getTransactions(Callback<List<Transactions>>callback){
Call<List<Transactions>>call =
BaseClient.getService().getTransactions(4,2016);
call.enqueue(callback);
}
である私は私がしたいすべての利用可能なトランザクションを示して、私のフラグメントでリストビューを取得私はそれを約20に制限する必要があり、ユーザがスワイプボトムを表示すると、別の20などを表示する必要があります。私はユーザーがスワイプまたは同様のときにいくつかのインデックス番号を送信するようにいくつかのアイデアを持っていますが、私はアンドロイドで良いことではないので、いくつかの簡単な方法があると確信しています。
私はまた、無限のアダプタのようなものを試してみましたが、私は改造やボレーと、このような本当に人気でないライブラリを使用することは許されないのです。 https://github.com/commonsguy/cwac-endless もうsupporを提供していないと私はそれがまだあるにもわからないんだけど有効