I have issues concerning my listView which is containing an imageView, textview and a button. The layout looks fine but my problem is that when I load the listView using my adapter, I try to download each of these images using Picasso library and then put it into my view. And I got a lot of memory consuption, heap about 120Mb and the images won't load. Here is my code:
ListItemLayout:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://ift.tt/nIICcg"
android:id="@+id/FrameLayout1"
android:layout_width="fill_parent"
android:layout_height="300dp" >
<ImageView
android:id="@+id/StatusImage"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_gravity="bottom"
android:orientation="vertical"
android:background="@drawable/gradient" >
<TextView
android:id="@+id/StatusText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Some text" />
<!--Button
android:id="@+id/likeButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:text="Like" /-->
</LinearLayout>
</ImageView>
The adapter:
public class MySimpleArrayAdapter extends ArrayAdapter<String> {
private final Context context;
private final String[] values;
public MySimpleArrayAdapter(Context context, String[] values) {
super(context, R.layout.simple_list_item, values);
this.context = context;
this.values = values;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
int distance = 0;
if (MainActivity.lat2 != null && MainActivity.lon2 != null) {
distance = (int) computeDistanceBetween(new LatLng(MainActivity.lat, MainActivity.lon), new LatLng(MainActivity.lat2[position], MainActivity.lon2[position]));
}
View rowView = inflater.inflate(R.layout.simple_list_item, parent, false);
TextView firsteLine = (TextView) rowView.findViewById(R.id.StatusText);
ImageView imageView = (ImageView) rowView.findViewById(R.id.StatusImage);
if (MainActivity.imgLink != null) {
Picasso.with(context).load("MyPage" + MainActivity.imgLink[position]).resize(imageView.getMaxWidth(),imageView.getMaxHeight()).centerCrop().into(imageView);
}
if (distance > 1000) {
distance = distance / 1000;
firsteLine.setText(values[position] + " ( " + String.valueOf(distance) + "km) ");
} else {
firsteLine.setText(values[position] + " ( " + String.valueOf(distance) + "m) ");
}
return rowView;
}
And here is the ListFragment:
public class MyListFragment extends ListFragment {
static ArrayAdapter<String> adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
adapter = new MySimpleArrayAdapter(getActivity(), MainActivity.text1);
setListAdapter(adapter);
}
@Override
public void onResume()
{
super.onResume();
//do the data changes. In this case, I am refreshing the arrayList cart_list and then calling the listview to refresh.
adapter = new MySimpleArrayAdapter(getActivity(), MainActivity.text1);
Log.d("Tag", "this is what i want");
setListAdapter(adapter);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Log.d("Tag","OnViewCreated called");
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
String author = null;
String link = null;
String text3 = null;
int distance = 0;
int ts = 0;
LatLng ll = new LatLng(MainActivity.lat, MainActivity.lon);
author = MainActivity.users[position];
link = MainActivity.imgLink[position];
text3 = MainActivity.text1[position];
distance = (int) computeDistanceBetween(ll, new LatLng(MainActivity.lat2[position], MainActivity.lon2[position]));
ts = MainActivity.time[position];
Intent intent = new Intent(getActivity(), ShowMarkerContent.class);
intent.putExtra("link", link);
intent.putExtra("author", author);
intent.putExtra("text", text3);
intent.putExtra("distance", distance);
intent.putExtra("time", ts);
startActivity(intent);
}
Aucun commentaire:
Enregistrer un commentaire