/* * This software is released under the BSD license. For full license see License-library.txt file. * * Copyright (c) 2011, Peter Knego & Matjaz Tercelj * All rights reserved. */ package com.leanengine.android.example; import android.app.ListActivity; import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.*; import com.leanengine.LeanEntity; import com.leanengine.LeanError; import com.leanengine.NetworkCallback; import java.util.Iterator; import java.util.Map; import java.util.Set; public class ViewActivity extends ListActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.view_layout); ListView lv = getListView(); loadEntities(); // lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener(){ // @Override // public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) { // return false; //To change body of implemented methods use File | Settings | File Templates. // } // }); // lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // When clicked, show a toast with the TextView text Toast.makeText(getApplicationContext(), ((TextView) view).getText(), Toast.LENGTH_SHORT).show(); } }); Button loginButton = (Button) findViewById(R.id.startButton); loginButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { ViewActivity.this.getListView() .setAdapter(new MyCustomBaseAdapter(ViewActivity.this, new LeanEntity[0])); loadEntities(); } }); } private void loadEntities() { LeanEntity.getAllInBackground(null, new NetworkCallback<LeanEntity>() { @Override public void onResult(LeanEntity... result) { ViewActivity.this.getListView().setAdapter(new MyCustomBaseAdapter(ViewActivity.this, result)); ViewActivity.this.getListView().setTextFilterEnabled(true); } @Override public void onFailure(final LeanError error) { Toast.makeText(ViewActivity.this, "Error invoking REST service.", 2000).show(); } }); } private static class MyCustomBaseAdapter extends BaseAdapter { private static LeanEntity[] entities; private LayoutInflater mInflater; private MyCustomBaseAdapter(Context context, LeanEntity... results) { entities = results; mInflater = LayoutInflater.from(context); } public int getCount() { return entities.length; } public Object getItem(int i) { return entities[i]; } public long getItemId(int i) { return i; } public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder holder; if (view == null) { view = mInflater.inflate(R.layout.entity_row_view, null); holder = new ViewHolder(); holder.txtName = (TextView) view.findViewById(R.id.name); holder.txtProperties = (TextView) view.findViewById(R.id.properties); view.setTag(holder); } else { holder = (ViewHolder) view.getTag(); } holder.txtName.setText(entities[i].getKind()); holder.txtProperties.setText(getPropertiesString(entities[i])); return view; } private String getPropertiesString(LeanEntity entity) { if (entity.getKeySet() == null) { return ""; } else { StringBuilder builder = new StringBuilder(); Set<String> keySet = entity.getKeySet(); for (String key : keySet) { builder.append(key).append(": ").append(entity.get(key).toString()).append(" | "); } return builder.substring(0, builder.length() - 2); } } private static class ViewHolder { TextView txtName; TextView txtProperties; } } }