Reputation: 75
package com.custom;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends Activity {
ListView list;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.v("", "on create");
ListView list = (ListView)findViewById(R.id.list);
List<PhoneList> listOfPhonebook = new ArrayList<PhoneList>();
listOfPhonebook.add(new PhoneList("Sutadi","9898989", "Jl.Pasar"));
listOfPhonebook.add(new PhoneList("Iyand","1234455", "Jl.Mall"));
listOfPhonebook.add(new PhoneList("Yanti","00000", "Jl.Sawah"));
Log.v("", "Add phone list");
PhoneBookAdapter adapter = new PhoneBookAdapter(this, listOfPhonebook);
Log.v("", "Adapter create");
list.setAdapter(adapter);
Log.v("", "adapter implement");
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
Toast.makeText(getBaseContext(), "You clciked ", Toast.LENGTH_LONG).show();
}
});
}
}
why the toast can not show ? anyone can help me ?
This is my PhoneBookAdapter
package com.custom;
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class PhoneBookAdapter extends BaseAdapter{
private Context context;
private List<PhoneList> listPhonebook;
public PhoneBookAdapter(Context context, List<PhoneList> listPhonebook) {
this.context = context;
this.listPhonebook = listPhonebook;
}
public int getCount() {
return listPhonebook.size();
}
public Object getItem(int position) {
return listPhonebook.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup viewGroup) {
PhoneList entry = listPhonebook.get(position);
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.row, null);
}
TextView tvContact = (TextView) convertView.findViewById(R.id.textstatus);
tvContact.setText(entry.getName());
TextView tvPhone = (TextView) convertView.findViewById(R.id.textkonos);
tvPhone.setText(entry.getPhone());
TextView tvAlamat = (TextView) convertView.findViewById(R.id.textalamat);
tvAlamat.setText(entry.getAlamat());
return convertView;
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Custom"
android:textSize="10pt"
android:paddingBottom="7px"
android:background="#d5d5d5"
android:textColor="#000000"
/>
<ListView
android:paddingLeft="2px"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/list"
></ListView>
</LinearLayout>
row.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip">
<CheckBox android:text=""
android:layout_width="wrap_content"
android:id="@+id/checkBox1"
android:layout_height="fill_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"></CheckBox>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textnama"
android:padding="7px"
android:layout_alignParentLeft="true"
android:text="Konos : "/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textstatus"
android:singleLine="true"
android:padding="7px"
android:layout_below="@+id/textnama"
android:layout_alignParentLeft="true"
android:text="haha"/>
<TextView android:layout_width="wrap_content"
android:text="hohohoho"
android:layout_height="wrap_content"
android:id="@+id/textkonos"
android:paddingRight="3px"
android:padding="7px"
android:layout_above="@+id/textstatus"
android:layout_toRightOf="@+id/textnama"></TextView>
<TextView android:layout_width="wrap_content"
android:text="-"
android:layout_height="wrap_content"
android:id="@+id/text"
android:paddingRight="3px"
android:padding="7px"
android:layout_below="@+id/textkonos"
android:layout_toRightOf="@+id/textstatus"></TextView>
<TextView android:layout_width="wrap_content"
android:text=""
android:layout_height="wrap_content"
android:id="@+id/textalamat"
android:paddingRight="3px"
android:padding="7px"
android:layout_alignParentBottom="true"
android:layout_alignLeft="@+id/textkonos"></TextView>
</RelativeLayout>
Upvotes: 5
Views: 6571
Reputation: 2444
You have to specify call the activity and then context
Toast.makeText(getApplicationContext(), "You clciked ", Toast.LENGTH_LONG).show();
Upvotes: 0
Reputation: 25
button = (Button) findViewById(R.id.buttonToast);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// get your custom_toast.xml ayout
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.custom_toast,
(ViewGroup) findViewById(R.id.custom_toast_layout_id));
// set a dummy image
ImageView image = (ImageView) layout.findViewById(R.id.image);
image.setImageResource(R.drawable.ic_launcher);
// set a message
TextView text = (TextView) layout.findViewById(R.id.text);
text.setText("Button is clicked!");
// Toast...
Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
}
});
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/custom_toast_layout_id"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFF"
android:orientation="horizontal"
android:padding="5dp" >
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginRight="5dp" />
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:textColor="#000" />
</LinearLayout>
[enter image description here][1]
Upvotes: 0
Reputation: 25
button = (Button) findViewById(R.id.buttonToast);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Toast.makeText(getApplicationContext(),
"Button is clicked", Toast.LENGTH_LONG).show();
}
});
Upvotes: 0
Reputation: 1
Toast.makeText(getActivity().getApplicationContext,"My Toast",Toast.LENGTH_LONG)
Upvotes: 0
Reputation: 756
Your Listview should be clickable and focusable, otherwise your onItemClickListener could not be called.
You can add focusable and clickable attributes in your .xml file or set it programmatically in your java code.
Upvotes: 0
Reputation: 13501
Toast.makeText(getApplicationContext(), "You clicked ", Toast.LENGTH_LONG).show();
Upvotes: 7
Reputation: 2285
Your ListView clickListener is not called. The reason for this is the Checkbox is focusable will cancel out the listview's clickable ability.
SIMPLE solution: add attribute:
android:focusable="true"
to your Checkbox xml
Upvotes: 3
Reputation: 11
Toast.makeText(getApplicationContext(), "You clciked ", Toast.LENGTH_LONG).show();
This should work.
"getApplicationContext()" is preferred over "getBaseContext()" because "getApplicationContext()" is actually associated with the application and will remain the same throughout the lifecycle. "getBaseContext()" should not be used as it is associated with the activity and may be destroyed when the activity is destroyed.
Upvotes: 1
Reputation: 6373
This is the best solution. I know, context can make developers pull their hair out, just change: Toast.makeText(getBaseContext(), "You clciked ", Toast.LENGTH_LONG).show();
for this: Toast.makeText(arg1.getContext(), "You clciked ", Toast.LENGTH_LONG).show();
Voila!
Upvotes: 1
Reputation: 71
First check whether your onItemClickListener is working or not. If your listener is not working, probably your toast will not show. Debug your code to see the main problem.
Upvotes: 1
Reputation: 4659
Try this
Context context = getApplicationContext();
CharSequence text = "Your text here";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
Upvotes: 0
Reputation: 1919
Inorder to control User Interface (like toast messages) in button click events , you need to use Handler's help.
Specicy the handler as below in the starting of class.
Handler objHandler = new Handler();
And inside button click event, use object of handler to execute Toast command (as below).
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
objHandler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Toast.makeText(getBaseContext(), "You clciked ", Toast.LENGTH_LONG).show();
}
}
});
Upvotes: 2
Reputation: 795
Toast messages can be suppressed. If they were, you'd see it in logcat. You can enable toasts by turning on the notifications for the app, which is on the app settings screen.
https://stackoverflow.com/a/12401795/614612
Upvotes: 1
Reputation: 24031
first put the breakpoint at toast and ensure that you are getting the call there and if you get the call and it is not showing then try this:
Toast.makeText(MainActivity.this, "You clciked ", Toast.LENGTH_LONG).show();
Upvotes: 5