package
com.example.sec.myapplication;
import
android.app.ActionBar;
import
android.app.Activity;
import
android.os.Bundle;
import
android.support.v7.app.ActionBarActivity;
import
android.view.LayoutInflater;
import
android.view.View;
import
android.view.ViewGroup;
import
android.widget.AdapterView;
import
android.widget.ArrayAdapter;
import
android.widget.Button;
import
android.widget.ImageView;
import
android.widget.LinearLayout;
import
android.widget.ListAdapter;
import
android.widget.ListView;
import
android.widget.RatingBar;
import
android.widget.ScrollView;
import
android.widget.TextView;
import
android.widget.Toast;
public
class
CustomListviewActivity
extends
ActionBarActivity {
private
RatingBar ratingBar;
private
TextView value;
ListView list;
String[] titles = {
"The Wizard of Oz (1939)"
,
"Citizen Kane (1941)"
,
"All About Eve (1950)"
,
"The Third Man (1949)"
,
"A Hard Day's Night (1964)"
,
"Modern Times (1936)"
,
"Metropolis (1927)"
,
"Metropolis (1927)"
,
"Metropolis (1927)"
,
"Metropolis (1927)"
} ;
Integer[] images = {
R.drawable.movie1,
R.drawable.movie2,
R.drawable.movie3,
R.drawable.movie4,
R.drawable.movie5,
R.drawable.movie6,
R.drawable.movie7,
R.drawable.movie7,
R.drawable.movie7,
R.drawable.movie7
};
int
[] ratingValues;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.main);
CustomList adapter =
new
CustomList(CustomListviewActivity.
this
);
list = (ListView) findViewById(R.id.list);
list.setAdapter(adapter);
setListViewHeightBasedOnChildren(list);
list.setOnItemClickListener(
new
AdapterView.OnItemClickListener() {
@Override
public
void
onItemClick(AdapterView<?> parent, View view,
int
position,
long
id) {
ScrollView scroll = (ScrollView) findViewById(R.id.scroll);
scroll.smoothScrollTo(scroll.getLeft(), scroll.getTop());
LinearLayout li = (LinearLayout) findViewById(R.id.li);
li.setVisibility(View.VISIBLE);
ImageView iv = (ImageView) findViewById(R.id.image);
iv.setImageResource(images[position]);
TextView text1 = (TextView) findViewById(R.id.text1);
text1.setText(titles[position]);
}
});
}
public
void
SetupRatingBar() {
ratingBar = (RatingBar) findViewById(R.id.ratingBar);
value = (TextView) findViewById(R.id.value);
ratingBar.setOnRatingBarChangeListener(
new
RatingBar.OnRatingBarChangeListener() {
public
void
onRatingChanged(RatingBar ratingBar,
float
rating,
boolean
fromUser) {
value.setText(String.valueOf(rating));
}
});
}
/**** Method for Setting the Height of the ListView dynamically.
**** Hack to fix the issue of not showing all the items of the ListView
**** when placed inside a ScrollView ****/
public
static
void
setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if
(listAdapter ==
null
)
return
;
int
desiredWidth = View.MeasureSpec.makeMeasureSpec(listView.getWidth(), View.MeasureSpec.UNSPECIFIED);
int
totalHeight =
0
;
View view =
null
;
for
(
int
i =
0
; i < listAdapter.getCount(); i++) {
view = listAdapter.getView(i, view, listView);
if
(i ==
0
)
view.setLayoutParams(
new
ViewGroup.LayoutParams(desiredWidth, ActionBar.LayoutParams.WRAP_CONTENT));
view.measure(desiredWidth, View.MeasureSpec.UNSPECIFIED);
totalHeight += view.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() -
1
));
listView.setLayoutParams(params);
listView.requestLayout();
}
public
class
CustomList
extends
ArrayAdapter<String> {
private
final
Activity context;
public
CustomList(Activity context ) {
super
(context, R.layout.listitem, titles);
this
.context = context;
}
@Override
public
View getView(
int
position, View view, ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View rowView= inflater.inflate(R.layout.listitem,
null
,
true
);
ImageView imageView = (ImageView) rowView.findViewById(R.id.image);
TextView title = (TextView) rowView.findViewById(R.id.title);
TextView rating = (TextView) rowView.findViewById(R.id.value);
TextView genre = (TextView) rowView.findViewById(R.id.genre);
TextView year = (TextView) rowView.findViewById(R.id.releaseYear);
title.setText(titles[position]);
imageView.setImageResource(images[position]);
rating.setText(
"1.0"
+value+
""
);
genre.setText(
"DRAMA"
);
year.setText(
1930
+position+
""
);
return
rowView;
}
}
}