android .由于手机上的“返回”键就关闭了整个activity。我想在界面上做一个“返回按钮”。返回到上一层。

具体的说就是:从一个母Listview进去到每一个子ListView。在子ListView中设置一个按钮,返回到母ListView,应该怎么弄啊!求教!我想知道如何写按钮... 具体的说就是 :从一个母Listview进去到每一个子ListView。在子ListView中设置一个按钮,返回到母ListView,应该怎么弄啊!求教!我想知道如何写按钮的监听? 展开
 我来答
素蓝
2011-03-30 · TA获得超过560个赞
知道小有建树答主
回答量:465
采纳率:0%
帮助的人:325万
展开全部
  可以换个思路.

  如果你的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了.:)

  素蓝手打回答,欢迎思路遇到问题的新手童鞋们复制 :)
彭陆pl1996
2011-03-30
知道答主
回答量:4
采纳率:0%
帮助的人:0
展开全部
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.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式