01.
public
class
MainActivity
extends
AppCompatActivity {
02.
03.
private
ArrayList<String> data =
new
ArrayList<String>();
04.
05.
@Override
06.
protected
void
onCreate(Bundle savedInstanceState) {
07.
super
.onCreate(savedInstanceState);
08.
setContentView(R.layout.activity_main);
09.
ListView lv = (ListView) findViewById(R.id.listview);
10.
generateListContent();
11.
lv.setAdapter(
new
MyListAdaper(
this
, R.layout.list_item, data));
12.
lv.setOnItemClickListener(
new
AdapterView.OnItemClickListener() {
13.
@Override
14.
public
void
onItemClick(AdapterView<?> parent, View view,
int
position,
long
id) {
15.
Toast.makeText(MainActivity.
this
,
"List item was clicked at "
+ position, Toast.LENGTH_SHORT).show();
16.
}
17.
});
18.
}
19.
20.
private
void
generateListContent() {
21.
for
(
int
i =
0
; i <
55
; i++) {
22.
data.add(
"This is row number "
+ i);
23.
}
24.
}
25.
26.
@Override
27.
public
boolean
onCreateOptionsMenu(Menu menu) {
28.
29.
getMenuInflater().inflate(R.menu.menu_main, menu);
30.
return
true
;
31.
}
32.
33.
@Override
34.
public
boolean
onOptionsItemSelected(MenuItem item) {
35.
36.
37.
38.
int
id = item.getItemId();
39.
40.
41.
if
(id == R.id.action_settings) {
42.
return
true
;
43.
}
44.
45.
return
super
.onOptionsItemSelected(item);
46.
}
47.
48.
private
class
MyListAdaper
extends
ArrayAdapter<String> {
49.
private
int
layout;
50.
private
List<String> mObjects;
51.
private
MyListAdaper(Context context,
int
resource, List<String> objects) {
52.
super
(context, resource, objects);
53.
mObjects = objects;
54.
layout = resource;
55.
}
56.
57.
@Override
58.
public
View getView(
final
int
position, View convertView, ViewGroup parent) {
59.
ViewHolder mainViewholder =
null
;
60.
if
(convertView ==
null
) {
61.
LayoutInflater inflater = LayoutInflater.from(getContext());
62.
convertView = inflater.inflate(layout, parent,
false
);
63.
ViewHolder viewHolder =
new
ViewHolder();
64.
viewHolder.thumbnail = (ImageView) convertView.findViewById(R.id.list_item_thumbnail);
65.
viewHolder.title = (TextView) convertView.findViewById(R.id.list_item_text);
66.
viewHolder.button = (Button) convertView.findViewById(R.id.list_item_btn);
67.
convertView.setTag(viewHolder);
68.
}
69.
mainViewholder = (ViewHolder) convertView.getTag();
70.
final
ViewHolder finalMainViewholder = mainViewholder;
71.
mainViewholder.button.setOnClickListener(
new
View.OnClickListener() {
72.
@Override
73.
public
void
onClick(View v) {
74.
Toast.makeText(getContext(),
"Button was clicked for list item "
+ position, Toast.LENGTH_SHORT).show();
75.
finalMainViewholder.button.setEnabled(
false
);
76.
}
77.
});
78.
mainViewholder.title.setText(getItem(position));
79.
80.
return
convertView;
81.
}
82.
}
83.
public
class
ViewHolder {
84.
85.
ImageView thumbnail;
86.
TextView title;
87.
Button button;
88.
}
89.
}