PDA

View Full Version : ایجاد لبست ویو با قابلیت جستجو



gilar1360
شنبه 24 مهر 1395, 09:38 صبح
با یه فایل جیسون اطلاعاتی را داخل لیست ویو نمایش میدهم الان می خواهم قابلیت جستجو بهش اضافه کنم نیاز به راهنمایی دارم
اینم کد های آداپترمربوطه





public class FeedListAdapter extends BaseAdapter {
private Activity activity;
private LayoutInflater inflater;
private List<FeedItem> feedItems;
ImageLoader imageLoader = AppController.getInstance().getImageLoader();

public FeedListAdapter(Activity activity, List<FeedItem> feedItems) {
this.activity = activity;
this.feedItems = feedItems;
}

@Override
public int getCount() {
return feedItems.size();
}

@Override
public Object getItem(int location) {
return feedItems.get(location);
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

if (inflater == null)
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE) ;
if (convertView == null)
convertView = inflater.inflate(R.layout.feed_item, null);

if (imageLoader == null)
imageLoader = AppController.getInstance().getImageLoader();

TextView name = (TextView) convertView.findViewById(R.id.name);

TextView intro = (TextView) convertView.findViewById(R.id.intro);

TextView valance = (TextView) convertView.findViewById(R.id.valance);

TextView date1 = (TextView) convertView.findViewById(R.id.date1);
TextView date2 = (TextView) convertView.findViewById(R.id.date2);

TextView price = (TextView) convertView.findViewById(R.id.price);

TextView url = (TextView) convertView.findViewById(R.id.txtUrl);

FeedImageView feedImageView = (FeedImageView) convertView
.findViewById(R.id.feedImage1);

FeedItem item = feedItems.get(position);

name.setText(item.getName());
intro.setText(item.getintro());

valance.setText(item.getvalance());
date1.setText(item.getdate1());
date2.setText(item.getdate2());
price.setText(item.getprice());

// Converting timestamp into x ago format


// Checking for null feed url
if (item.getUrl() != null) {
url.setText(Html.fromHtml("<a href=\"" + item.getUrl() + "\">"
+ item.getUrl() + "</a> "));

// Making url clickable
//url.setMovementMethod(LinkMovementMethod.getInstan ce());
// url.setVisibility(View.VISIBLE);
} else {
// url is null, remove from the view
url.setVisibility(View.GONE);
}

// user profile pic

// Feed image
if (item.getImge() != null) {
feedImageView.setImageUrl(item.getImge(), imageLoader);
feedImageView.setVisibility(View.VISIBLE);
feedImageView
.setResponseObserver(new FeedImageView.ResponseObserver() {
@Override
public void onError() {
}

@Override
public void onSuccess() {
}
});
} else {
feedImageView.setVisibility(View.GONE);
}

return convertView;
}

}



و این هم mainactiviy




import android.app.SearchManager;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;

import ir.menu.tour5.adapter.FeedListAdapter;
import ir.menu.tour5.app.AppController;
import ir.menu.tour5.data.FeedItem;

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.View;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SearchView;

import com.android.volley.Cache;
import com.android.volley.Cache.Entry;
import com.android.volley.Request.Method;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.VolleyLog;
import com.android.volley.toolbox.JsonObjectRequest;

public class MainActivity extends BaseActivity{
private static final String TAG = MainActivity.class.getSimpleName();
private ListView listView;
private FeedListAdapter listAdapter;
private List<FeedItem> feedItems;
private String URL_FEED = "http://test.ir/android/index3.php";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.list);
EditText ed = (EditText) findViewById(R.id.editText1);
listView.setTextFilterEnabled(true);
feedItems = new ArrayList<FeedItem>();

listAdapter = new FeedListAdapter(this, feedItems);
listView.setAdapter(listAdapter);
listView.setTextFilterEnabled(true);

// We first check for cached request
Cache cache = AppController.getInstance().getRequestQueue().getC ache();
Entry entry = cache.get(URL_FEED);
if (entry != null) {
// fetch the data from cache
try {
String data = new String(entry.data, "UTF-8");
try {
parseJsonFeed(new JSONObject(data));
} catch (JSONException e) {
e.printStackTrace();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}

} else {
// making fresh volley request and getting json
JsonObjectRequest jsonReq = new JsonObjectRequest(Method.GET,
URL_FEED, null, new Response.Listener<JSONObject>() {

@Override
public void onResponse(JSONObject response) {
VolleyLog.d(TAG, "Response: " + response.toString());
if (response != null) {
parseJsonFeed(response);
}
}
}, new Response.ErrorListener() {

@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
}
});

// Adding request to volley request queue
AppController.getInstance().addToRequestQueue(json Req);
}

}

/**
* Parsing json reponse and passing the data to feed view list adapter
* */
private void parseJsonFeed(JSONObject response) {
try {
JSONArray feedArray = response.getJSONArray("feed");
for (int i = 0; i < feedArray.length(); i++) {
JSONObject feedObj = (JSONObject) feedArray.get(i);

FeedItem item = new FeedItem();
item.setId(feedObj.getInt("id"));
item.setName(feedObj.getString("name"));

// Image might be null sometimes
String image = feedObj.isNull("image") ? null : feedObj
.getString("image");
item.setImge(image);
item.setprice(feedObj.getString("price"));
item.setintro(feedObj.getString("intro"));
item.setdate1(feedObj.getString("date1"));
item.setdate2(feedObj.getString("date2"));
item.setvalance(feedObj.getString("valance"));
// url might be null sometimes
String feedUrl = feedObj.isNull("url") ? null : feedObj
.getString("url");
item.setUrl(feedUrl);

feedItems.add(item);
}

// notify data changes to list adapater
listAdapter.notifyDataSetChanged();
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_search, menu);
return true;
}



@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();

//noinspection SimplifiableIfStatement
switch (id)
{
case R.id.action_main: return true;
}

return super.onOptionsItemSelected(item);
}

}

iman0111
یک شنبه 22 بهمن 1396, 14:01 عصر
سلام شاید بتوانید از فیلتر استفاده کنید و جواب دهد