setOnItemClickListener 不起作用
setOnItemClickListener does not work
我在弄清楚如何在 Android 的 GitHub 示例项目中实现“.setOnItemClickListener”时遇到一些问题。
我想要 select 列表视图的单元格,但我可以让它工作。 github 项目是这样的:
https://github.com/schrockblock/android-table-view
我想在我的主 activity 中添加监听器,但我做不到。这是代码:
public class MainActivity extends ActionBarActivity {
public String[] items={};
WifiHelper wifiHelper;
List<ScanResult> list;
//public WifiManager pWifiManager;
ListView tableView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 取得WifiManager对象
//pWifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
wifiHelper = new WifiHelper(this);
//open wifi
wifiHelper.openWifi(new WifiHelper.openWifiCallback() {
@Override
public void openSuccess() {
//open success
}
@Override
public void openFail() {
//open fail
}
});
//scan wifi
list = wifiHelper.startScan();
tableView = (ListView)findViewById(R.id.table_view);
TableViewDataSource tvds = new TableViewDataSource(this){
@Override
protected int numberOfSections() {
return 3;
}
@Override
protected String titleForHeaderInSection(int section) {
if(section==0)
return "\nGENERAL";
else if(section==1)
return "Pull down to refresh networks information ot tap 'Scan' button in the top bar of the screen.\n\nNETWORKS";
else
return "Networks under -75dB (RSSI) may have connectivity problems. Try to be as near as you can of the network.\n\nOnly supported networks can use the exploit feature of this app. You can use iWepPRO as your wifi manager application";
}
@Override
protected int numberOfRowsInSection(int section){
if(section==0)
return 3;
else if(section==1)
return list.size();
else
return 1;
}
@Override
protected DefaultCell cellForRowAtIndexPath(JIndexPath indexPath) {
if(indexPath.section==0) {
DefaultCell cell = new DefaultCell();
cell.hashIBencryption = true;
cell.imageButtonImage = R.drawable.emptywhite2px;
switch (indexPath.row){
case 0:
cell.textLabelText = "WiFi";
cell.hasDisclosureIndicator = false;
cell.hasDisclosureIndicator2 = false;
cell.hasSwitch = true;
cell.hasSwitchOn = true;
break;
case 1:
cell.textLabelText = "Auto-Scan";
cell.hasDisclosureIndicator = false;
cell.hasDisclosureIndicator2 = false;
cell.hasSwitch = true;
cell.hasSwitchOn = false;
break;
case 2:
cell.textLabelText = "Information";
cell.hasDisclosureIndicator = true;
cell.hasDisclosureIndicator2 = false;
break;
default:
break;
}
return cell;
}else if(indexPath.section==1){
SubtitleCell cell1 = new SubtitleCell();
cell1.hasDisclosureIndicator = false;
cell1.hasDisclosureIndicator2 = true;
cell1.hashIBencryption = true;
//cell1.textLabelText = "network name " + indexPath.row;
ScanResult r = list.get(indexPath.row);
//String ssidName = r.SSID;
cell1.textLabelText = r.SSID;
//cell1.detailTextLabelText = "signal " + indexPath.row;
cell1.detailTextLabelText = "" + r.level;
//cell1.detailTextLabelText = "" + calculateSignalStength(pWifiManager, r.level);
cell1.imageButtonImage = R.drawable.deviceaccesssecure;
return cell1;
}else if(indexPath.section==2){
SubtitleCell cell2 = new SubtitleCell();
cell2.hashIBencryption = true;
cell2.imageButtonImage = R.drawable.emptywhite2px;
cell2.textLabelText = " ";
cell2.hasDisclosureIndicator2 = false;
cell2.hasDisclosureIndicator = false;
cell2.hasEmptyCell = true;
return cell2;
}
return null;
}
};
tableView.setAdapter(tvds);
}
我已经阅读并测试了一些在 'setAdapter()' 函数之后编码 setOnItemClickListener 的示例,但它不起作用。
我正在尝试设置单元格 selection 以显示带有一些文本的 Toast 以查看它是否有效,但我不知道我做错了什么。
谁能帮我一些提示??
非常感谢您。
这是我的两个布局:
单元格布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rl"
android:orientation="horizontal"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:padding="0dp"
android:background="#ffdedede">
<TextView
android:id="@+id/header_text_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:textSize="12dp"
android:textColor="@android:color/darker_gray"
android:padding="0dp"
android:visibility="gone"
android:layout_marginLeft="20dp"
android:typeface="sans"
android:layout_marginRight="20dp"
android:elegantTextHeight="false" />
<RelativeLayout
android:id="@+id/rl2"
android:layout_centerVertical="true"
android:layout_width="fill_parent"
android:layout_height="55dp"
android:layout_below="@+id/header_text_view"
android:padding="0dp"
android:background="@android:color/white">
<RelativeLayout
android:id="@+id/rl3"
android:layout_centerVertical="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="0dp"
android:background="@android:color/white">
<TextView android:id="@+id/title_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Cell Title"
android:textSize="18sp"
android:textColor="#000"
android:background="#0fff"
android:paddingTop="5dp"
android:paddingLeft="5dp"
android:paddingBottom="2dp"
android:typeface="sans"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/ibencryption"
android:layout_toEndOf="@+id/ibencryption" />
<TextView
android:id="@+id/detail_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Cell Subtitle"
android:paddingLeft="5dp"
android:paddingBottom="5dp"
android:textColor="#555"
android:background="#0fff"
android:textSize="14sp"
android:layout_alignParentBottom="true"
android:layout_toRightOf="@+id/ibencryption"
android:layout_toEndOf="@+id/ibencryption" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ibencryption"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="false"
android:layout_alignParentTop="true"
android:background="@android:color/white"
android:layout_marginLeft="10dp"
android:layout_centerVertical="true"
android:adjustViewBounds="false" />
</RelativeLayout>
<ImageView
android:id="@+id/disclosure_indicator"
android:src="@drawable/nextitem"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:layout_marginRight="20dp"
android:cropToPadding="true"/>
<ImageView
android:id="@+id/disclosure_indicator_2"
android:src="@drawable/actionabout"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:layout_marginRight="20dp"
android:cropToPadding="true"/>
<Switch
android:id="@+id/switch_indicator"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:layout_marginRight="20dp"
android:cropToPadding="true"/>
</RelativeLayout>
主要activity布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<ListView
android:id="@+id/table_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
谢谢!!
这是提供 OnItemClickListener 的方法:
tableView.setOnItemClickListener(new OnItemClickListener(){
void onItemClick(AdapterView<?> parent, View view, int position, long id){
switch(position){
default: Toast.makeToast(MainActivity.this, "Some crappy text",Toast.LENGTH_LONG ).show();
}
}
}};
一般:
首先将所有 View#findViewById(int)
代码放在 OnCreate 方法的顶部,就在 Activity#setContentView(int)
调用下方。
然后尝试扫描您的 WifiManager#openSuccess() 回调..
尝试重构您的代码并用开关块替换所有检查整数的 if、else if 和 else 块。
请不要 return null EVER.
我在弄清楚如何在 Android 的 GitHub 示例项目中实现“.setOnItemClickListener”时遇到一些问题。
我想要 select 列表视图的单元格,但我可以让它工作。 github 项目是这样的:
https://github.com/schrockblock/android-table-view
我想在我的主 activity 中添加监听器,但我做不到。这是代码:
public class MainActivity extends ActionBarActivity {
public String[] items={};
WifiHelper wifiHelper;
List<ScanResult> list;
//public WifiManager pWifiManager;
ListView tableView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 取得WifiManager对象
//pWifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
wifiHelper = new WifiHelper(this);
//open wifi
wifiHelper.openWifi(new WifiHelper.openWifiCallback() {
@Override
public void openSuccess() {
//open success
}
@Override
public void openFail() {
//open fail
}
});
//scan wifi
list = wifiHelper.startScan();
tableView = (ListView)findViewById(R.id.table_view);
TableViewDataSource tvds = new TableViewDataSource(this){
@Override
protected int numberOfSections() {
return 3;
}
@Override
protected String titleForHeaderInSection(int section) {
if(section==0)
return "\nGENERAL";
else if(section==1)
return "Pull down to refresh networks information ot tap 'Scan' button in the top bar of the screen.\n\nNETWORKS";
else
return "Networks under -75dB (RSSI) may have connectivity problems. Try to be as near as you can of the network.\n\nOnly supported networks can use the exploit feature of this app. You can use iWepPRO as your wifi manager application";
}
@Override
protected int numberOfRowsInSection(int section){
if(section==0)
return 3;
else if(section==1)
return list.size();
else
return 1;
}
@Override
protected DefaultCell cellForRowAtIndexPath(JIndexPath indexPath) {
if(indexPath.section==0) {
DefaultCell cell = new DefaultCell();
cell.hashIBencryption = true;
cell.imageButtonImage = R.drawable.emptywhite2px;
switch (indexPath.row){
case 0:
cell.textLabelText = "WiFi";
cell.hasDisclosureIndicator = false;
cell.hasDisclosureIndicator2 = false;
cell.hasSwitch = true;
cell.hasSwitchOn = true;
break;
case 1:
cell.textLabelText = "Auto-Scan";
cell.hasDisclosureIndicator = false;
cell.hasDisclosureIndicator2 = false;
cell.hasSwitch = true;
cell.hasSwitchOn = false;
break;
case 2:
cell.textLabelText = "Information";
cell.hasDisclosureIndicator = true;
cell.hasDisclosureIndicator2 = false;
break;
default:
break;
}
return cell;
}else if(indexPath.section==1){
SubtitleCell cell1 = new SubtitleCell();
cell1.hasDisclosureIndicator = false;
cell1.hasDisclosureIndicator2 = true;
cell1.hashIBencryption = true;
//cell1.textLabelText = "network name " + indexPath.row;
ScanResult r = list.get(indexPath.row);
//String ssidName = r.SSID;
cell1.textLabelText = r.SSID;
//cell1.detailTextLabelText = "signal " + indexPath.row;
cell1.detailTextLabelText = "" + r.level;
//cell1.detailTextLabelText = "" + calculateSignalStength(pWifiManager, r.level);
cell1.imageButtonImage = R.drawable.deviceaccesssecure;
return cell1;
}else if(indexPath.section==2){
SubtitleCell cell2 = new SubtitleCell();
cell2.hashIBencryption = true;
cell2.imageButtonImage = R.drawable.emptywhite2px;
cell2.textLabelText = " ";
cell2.hasDisclosureIndicator2 = false;
cell2.hasDisclosureIndicator = false;
cell2.hasEmptyCell = true;
return cell2;
}
return null;
}
};
tableView.setAdapter(tvds);
}
我已经阅读并测试了一些在 'setAdapter()' 函数之后编码 setOnItemClickListener 的示例,但它不起作用。
我正在尝试设置单元格 selection 以显示带有一些文本的 Toast 以查看它是否有效,但我不知道我做错了什么。
谁能帮我一些提示??
非常感谢您。
这是我的两个布局:
单元格布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rl"
android:orientation="horizontal"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:padding="0dp"
android:background="#ffdedede">
<TextView
android:id="@+id/header_text_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:textSize="12dp"
android:textColor="@android:color/darker_gray"
android:padding="0dp"
android:visibility="gone"
android:layout_marginLeft="20dp"
android:typeface="sans"
android:layout_marginRight="20dp"
android:elegantTextHeight="false" />
<RelativeLayout
android:id="@+id/rl2"
android:layout_centerVertical="true"
android:layout_width="fill_parent"
android:layout_height="55dp"
android:layout_below="@+id/header_text_view"
android:padding="0dp"
android:background="@android:color/white">
<RelativeLayout
android:id="@+id/rl3"
android:layout_centerVertical="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="0dp"
android:background="@android:color/white">
<TextView android:id="@+id/title_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Cell Title"
android:textSize="18sp"
android:textColor="#000"
android:background="#0fff"
android:paddingTop="5dp"
android:paddingLeft="5dp"
android:paddingBottom="2dp"
android:typeface="sans"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/ibencryption"
android:layout_toEndOf="@+id/ibencryption" />
<TextView
android:id="@+id/detail_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Cell Subtitle"
android:paddingLeft="5dp"
android:paddingBottom="5dp"
android:textColor="#555"
android:background="#0fff"
android:textSize="14sp"
android:layout_alignParentBottom="true"
android:layout_toRightOf="@+id/ibencryption"
android:layout_toEndOf="@+id/ibencryption" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ibencryption"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="false"
android:layout_alignParentTop="true"
android:background="@android:color/white"
android:layout_marginLeft="10dp"
android:layout_centerVertical="true"
android:adjustViewBounds="false" />
</RelativeLayout>
<ImageView
android:id="@+id/disclosure_indicator"
android:src="@drawable/nextitem"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:layout_marginRight="20dp"
android:cropToPadding="true"/>
<ImageView
android:id="@+id/disclosure_indicator_2"
android:src="@drawable/actionabout"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:layout_marginRight="20dp"
android:cropToPadding="true"/>
<Switch
android:id="@+id/switch_indicator"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:layout_marginRight="20dp"
android:cropToPadding="true"/>
</RelativeLayout>
主要activity布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<ListView
android:id="@+id/table_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
谢谢!!
这是提供 OnItemClickListener 的方法:
tableView.setOnItemClickListener(new OnItemClickListener(){
void onItemClick(AdapterView<?> parent, View view, int position, long id){
switch(position){
default: Toast.makeToast(MainActivity.this, "Some crappy text",Toast.LENGTH_LONG ).show();
}
}
}};
一般:
首先将所有 View#findViewById(int)
代码放在 OnCreate 方法的顶部,就在 Activity#setContentView(int)
调用下方。
然后尝试扫描您的 WifiManager#openSuccess() 回调..
尝试重构您的代码并用开关块替换所有检查整数的 if、else if 和 else 块。 请不要 return null EVER.