android .由于手机上的“返回”键就关闭了整个activity。我想在界面上做一个“返回按钮”。返回到上一层。
具体的说就是:从一个母Listview进去到每一个子ListView。在子ListView中设置一个按钮,返回到母ListView,应该怎么弄啊!求教!我想知道如何写按钮...
具体的说就是 :从一个母Listview进去到每一个子ListView。在子ListView中设置一个按钮,返回到母ListView,应该怎么弄啊!求教!我想知道如何写按钮的监听?
展开
展开全部
可以换个思路.
如果你的listview是两个的话,你可以定义一个全局变量,
在listview1上点击,进入listview2时,把这个变量设置为1,来记录需要返回的页面是1.
然后重写返回键的按钮,判断这个变量是几.如果是1时,就隐藏listview2,显示listview1.
如果是一个listview,那就在返回键上判断变量是1时,就重新刷新listview,重新加载数据.
不过建议是第一种那么做,隐藏显示很方便.
setVisibility(View.GONE)是隐藏,setVisibility(View.VISIBLE)是显示.
另外 监听返回键的是这里.
public boolean onKeyDown(int keyCode, KeyEvent event) {
//判断按下的键是返回键.
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
switch(pageID){
case 1 : //是1时
listview1.setVisibility(View.VISIBLE);
listview2.setVisibility(View.GONE);
break;
}
}
}
同样,若不想用返回键,想用自定义按钮的话也是一样的.在button的事件里控制隐藏显示.
如何写按钮的监听么..这个.
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//被点后做什么.
}
});
有很多种实现方式,楼主不要被"上一层"而禁锢住了,换一种思考方式就ok了.:)
素蓝手打回答,欢迎思路遇到问题的新手童鞋们复制 :)
如果你的listview是两个的话,你可以定义一个全局变量,
在listview1上点击,进入listview2时,把这个变量设置为1,来记录需要返回的页面是1.
然后重写返回键的按钮,判断这个变量是几.如果是1时,就隐藏listview2,显示listview1.
如果是一个listview,那就在返回键上判断变量是1时,就重新刷新listview,重新加载数据.
不过建议是第一种那么做,隐藏显示很方便.
setVisibility(View.GONE)是隐藏,setVisibility(View.VISIBLE)是显示.
另外 监听返回键的是这里.
public boolean onKeyDown(int keyCode, KeyEvent event) {
//判断按下的键是返回键.
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
switch(pageID){
case 1 : //是1时
listview1.setVisibility(View.VISIBLE);
listview2.setVisibility(View.GONE);
break;
}
}
}
同样,若不想用返回键,想用自定义按钮的话也是一样的.在button的事件里控制隐藏显示.
如何写按钮的监听么..这个.
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//被点后做什么.
}
});
有很多种实现方式,楼主不要被"上一层"而禁锢住了,换一种思考方式就ok了.:)
素蓝手打回答,欢迎思路遇到问题的新手童鞋们复制 :)
展开全部
ListView的每一个Item的类型是TListItem,这个类型带有句柄属性
建议你使用GetDC函数来获取每个Item的作图区,然后使用Canvas对象在目标上作图:关键代码如下:
const
PicFullName: String = 'C:\Start.bmp';
procedure TForm1.FormCreate(Sender: TObject);
begin
Self.lvTst.LargeImages := TImageList.Create(Application);
//设置ListView的LargetImage值,不使用用来装载图片,只是在vsIcon
//显示方式中给图片空位用
//依此类推:vsList显示模式显示Item图片就实例化一个SmallImages
end;
procedure TForm1.BtnSetPicClick(Sender: TObject);//点击此按钮为当前被选中的Item设置图片
var
C: PChar;
Item: TListItem;
begin
if Self.lvTst.Selected = nil then Exit;
Item := Self.lvTst.Selected;
New(C);
GetMem(C,255);
StrPCopy(C,PicFullName);
if Item.Data <> nil then
Dispose(Item.Data);
Item.Data := C;//在Item中的Data属性是一个指针,让它保存图片的路径
Self.lvTst.Invalidate;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
I: Integer;
begin
for I := 0 to Self.lvTst.Items.Count - 1 do
if Self.lvTst.Items[I].Data <> nil then
Dispose(Self.lvTst.Items[I].Data);//释放每一个指针
end;
procedure TForm1.lvTstCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);//在ListView的OnCustomDraw事件中加入图形持久化代码
var
X,Y: Integer;
Cvs: TCanvas;
Bmp: TBitMap;
begin
Cvs := TCanvas.Create;
Bmp := TBitMap.Create;
if Item.Data <> nil then
begin
Cvs.Handle := GetDC(Item.Handle);
Bmp.LoadFromFile(PChar(Item.Data));
X := Item.Position.X;
Y := Item.Position.Y;
Cvs.Draw(X,Y,BMP);//开始作图
end;
Cvs.Free;
Bmp.Free;
end;
end.
建议你使用GetDC函数来获取每个Item的作图区,然后使用Canvas对象在目标上作图:关键代码如下:
const
PicFullName: String = 'C:\Start.bmp';
procedure TForm1.FormCreate(Sender: TObject);
begin
Self.lvTst.LargeImages := TImageList.Create(Application);
//设置ListView的LargetImage值,不使用用来装载图片,只是在vsIcon
//显示方式中给图片空位用
//依此类推:vsList显示模式显示Item图片就实例化一个SmallImages
end;
procedure TForm1.BtnSetPicClick(Sender: TObject);//点击此按钮为当前被选中的Item设置图片
var
C: PChar;
Item: TListItem;
begin
if Self.lvTst.Selected = nil then Exit;
Item := Self.lvTst.Selected;
New(C);
GetMem(C,255);
StrPCopy(C,PicFullName);
if Item.Data <> nil then
Dispose(Item.Data);
Item.Data := C;//在Item中的Data属性是一个指针,让它保存图片的路径
Self.lvTst.Invalidate;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
I: Integer;
begin
for I := 0 to Self.lvTst.Items.Count - 1 do
if Self.lvTst.Items[I].Data <> nil then
Dispose(Self.lvTst.Items[I].Data);//释放每一个指针
end;
procedure TForm1.lvTstCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);//在ListView的OnCustomDraw事件中加入图形持久化代码
var
X,Y: Integer;
Cvs: TCanvas;
Bmp: TBitMap;
begin
Cvs := TCanvas.Create;
Bmp := TBitMap.Create;
if Item.Data <> nil then
begin
Cvs.Handle := GetDC(Item.Handle);
Bmp.LoadFromFile(PChar(Item.Data));
X := Item.Position.X;
Y := Item.Position.Y;
Cvs.Draw(X,Y,BMP);//开始作图
end;
Cvs.Free;
Bmp.Free;
end;
end.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询